123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- 'use strict';
- exports.__esModule = true;
- var _map2 = require('lodash/map');
- var _map3 = _interopRequireDefault(_map2);
- var _uniq2 = require('lodash/uniq');
- var _uniq3 = _interopRequireDefault(_uniq2);
- var _assign2 = require('lodash/assign');
- var _assign3 = _interopRequireDefault(_assign2);
- var _inherits = require('inherits');
- var _inherits2 = _interopRequireDefault(_inherits);
- var _raw = require('../../../raw');
- var _raw2 = _interopRequireDefault(_raw);
- var _columncompiler = require('../../../schema/columncompiler');
- var _columncompiler2 = _interopRequireDefault(_columncompiler);
- var _trigger = require('./trigger');
- var _trigger2 = _interopRequireDefault(_trigger);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- // Column Compiler
- // -------
- function ColumnCompiler_Oracle() {
- _columncompiler2.default.apply(this, arguments);
- this.modifiers = ['defaultTo', 'checkIn', 'nullable', 'comment'];
- }
- (0, _inherits2.default)(ColumnCompiler_Oracle, _columncompiler2.default);
- (0, _assign3.default)(ColumnCompiler_Oracle.prototype, {
- // helper function for pushAdditional in increments() and bigincrements()
- _createAutoIncrementTriggerAndSequence: function _createAutoIncrementTriggerAndSequence() {
- // TODO Add warning that sequence etc is created
- this.pushAdditional(function () {
- var tableName = this.tableCompiler.tableNameRaw;
- var createTriggerSQL = _trigger2.default.createAutoIncrementTrigger(tableName);
- this.pushQuery(createTriggerSQL);
- });
- },
- increments: function increments() {
- this._createAutoIncrementTriggerAndSequence();
- return 'integer not null primary key';
- },
- bigincrements: function bigincrements() {
- this._createAutoIncrementTriggerAndSequence();
- return 'number(20, 0) not null primary key';
- },
- floating: function floating(precision) {
- var parsedPrecision = this._num(precision, 0);
- return 'float' + (parsedPrecision ? '(' + parsedPrecision + ')' : '');
- },
- double: function double(precision, scale) {
- // if (!precision) return 'number'; // TODO: Check If default is ok
- return 'number(' + this._num(precision, 8) + ', ' + this._num(scale, 2) + ')';
- },
- integer: function integer(length) {
- return length ? 'number(' + this._num(length, 11) + ')' : 'integer';
- },
- tinyint: 'smallint',
- smallint: 'smallint',
- mediumint: 'integer',
- biginteger: 'number(20, 0)',
- text: 'clob',
- enu: function enu(allowed) {
- allowed = (0, _uniq3.default)(allowed);
- var maxLength = (allowed || []).reduce(function (maxLength, name) {
- return Math.max(maxLength, String(name).length);
- }, 1);
- // implicitly add the enum values as checked values
- this.columnBuilder._modifiers.checkIn = [allowed];
- return 'varchar2(' + maxLength + ')';
- },
- time: 'timestamp with time zone',
- datetime: function datetime(without) {
- return without ? 'timestamp' : 'timestamp with time zone';
- },
- timestamp: function timestamp(without) {
- return without ? 'timestamp' : 'timestamp with time zone';
- },
- bit: 'clob',
- json: 'clob',
- bool: function bool() {
- // implicitly add the check for 0 and 1
- this.columnBuilder._modifiers.checkIn = [[0, 1]];
- return 'number(1, 0)';
- },
- varchar: function varchar(length) {
- return 'varchar2(' + this._num(length, 255) + ')';
- },
- // Modifiers
- // ------
- comment: function comment(_comment) {
- this.pushAdditional(function () {
- this.pushQuery('comment on column ' + this.tableCompiler.tableName() + '.' + this.formatter.wrap(this.args[0]) + " is '" + (_comment || '') + "'");
- }, _comment);
- },
- checkIn: function checkIn(value) {
- // TODO: Maybe accept arguments also as array
- // TODO: value(s) should be escaped properly
- if (value === undefined) {
- return '';
- } else if (value instanceof _raw2.default) {
- value = value.toQuery();
- } else if (Array.isArray(value)) {
- value = (0, _map3.default)(value, function (v) {
- return '\'' + v + '\'';
- }).join(', ');
- } else {
- value = '\'' + value + '\'';
- }
- return 'check (' + this.formatter.wrap(this.args[0]) + ' in (' + value + '))';
- }
- });
- exports.default = ColumnCompiler_Oracle;
- module.exports = exports['default'];
|