@dbml/core 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/export/DbmlExporter.js +17 -9
  2. package/lib/export/JsonExporter.js +1 -3
  3. package/lib/export/ModelExporter.js +1 -3
  4. package/lib/export/MysqlExporter.js +50 -42
  5. package/lib/export/PostgresExporter.js +64 -49
  6. package/lib/export/SqlServerExporter.js +52 -46
  7. package/lib/model_structure/database.js +73 -28
  8. package/lib/model_structure/dbState.js +1 -3
  9. package/lib/model_structure/element.js +13 -13
  10. package/lib/model_structure/endpoint.js +18 -14
  11. package/lib/model_structure/enum.js +18 -14
  12. package/lib/model_structure/enumValue.js +16 -12
  13. package/lib/model_structure/field.js +47 -13
  14. package/lib/model_structure/indexColumn.js +16 -12
  15. package/lib/model_structure/indexes.js +18 -14
  16. package/lib/model_structure/ref.js +19 -16
  17. package/lib/model_structure/schema.js +24 -36
  18. package/lib/model_structure/table.js +19 -15
  19. package/lib/model_structure/tableGroup.js +18 -14
  20. package/lib/model_structure/utils.js +5 -0
  21. package/lib/parse/Parser.js +2 -4
  22. package/lib/parse/buildParser.js +1 -3
  23. package/lib/parse/dbml/parser.pegjs +64 -20
  24. package/lib/parse/dbmlParser.js +1401 -899
  25. package/lib/parse/mssql/constraint_definition/actions.js +2 -2
  26. package/lib/parse/mssql/fk_definition/actions.js +10 -3
  27. package/lib/parse/mssql/keyword_parsers.js +12 -2
  28. package/lib/parse/mssql/statements/actions.js +37 -6
  29. package/lib/parse/mssql/statements/index.js +1 -1
  30. package/lib/parse/mssql/statements/statement_types/alter_table/actions.js +11 -5
  31. package/lib/parse/mssql/statements/statement_types/comments/actions.js +57 -0
  32. package/lib/parse/mssql/statements/statement_types/comments/index.js +97 -0
  33. package/lib/parse/mssql/statements/statement_types/create_index/actions.js +6 -1
  34. package/lib/parse/mssql/statements/statement_types/create_table/actions.js +12 -10
  35. package/lib/parse/mssql/statements/statement_types/index.js +4 -1
  36. package/lib/parse/mssql/utils.js +16 -1
  37. package/lib/parse/mysql/parser.pegjs +66 -40
  38. package/lib/parse/mysqlParser.js +534 -359
  39. package/lib/parse/postgresParser.js +15 -13
  40. package/lib/parse/postgresql/Base_rules.pegjs +45 -10
  41. package/lib/parse/postgresql/Commands/Alter_table/Alter_table.pegjs +49 -4
  42. package/lib/parse/postgresql/Commands/Comment.pegjs +18 -6
  43. package/lib/parse/postgresql/Commands/Create_table/Create_table_normal.pegjs +5 -3
  44. package/lib/parse/postgresql/Commands/Create_table/Create_table_of.pegjs +1 -1
  45. package/lib/parse/postgresql/Commands/Create_table/Create_table_partition_of.pegjs +1 -1
  46. package/lib/parse/postgresql/Commands/Create_type/Create_type_enum.pegjs +2 -2
  47. package/lib/parse/postgresql/Commands/Ignore_syntax.pegjs +10 -1
  48. package/lib/parse/postgresql/InitializerUtils.pegjs +14 -2
  49. package/lib/parse/postgresql/Keywords.pegjs +5 -1
  50. package/lib/parse/postgresql/parser.pegjs +22 -8
  51. package/lib/parse/schemarbParser.js +3 -3
  52. package/package.json +2 -2
@@ -2,7 +2,7 @@
2
2
 
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
6
 
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
 
@@ -55,7 +55,7 @@ function makeTableConstraint(constraintName, option) {
55
55
  if (!option) return null;
56
56
  return {
57
57
  type: option.type,
58
- value: _objectSpread({}, option.value, {
58
+ value: _objectSpread(_objectSpread({}, option.value), {}, {
59
59
  name: option.type === 'indexes' && option.value.pk ? null : constraintName
60
60
  })
61
61
  };
@@ -2,9 +2,13 @@
2
2
 
3
3
  var _ = require('lodash');
4
4
 
5
+ var _require = require('../utils'),
6
+ getFullTableName = _require.getFullTableName;
7
+
5
8
  function makeEndPoint(tableName, columnName, relation) {
6
9
  return {
7
- tableName: tableName[tableName.length - 1],
10
+ tableName: tableName.name,
11
+ schemaName: tableName.schemaName,
8
12
  fieldNames: columnName,
9
13
  relation: relation
10
14
  };
@@ -24,7 +28,8 @@ function setOption(value, fkOptions) {
24
28
 
25
29
  function makeColumnConstraintFK(_unused, tableName, columnName, fkOptions) {
26
30
  var value = {};
27
- value.endpoint = makeEndPoint(tableName, columnName, '1');
31
+ var fullTableName = getFullTableName(tableName);
32
+ value.endpoint = makeEndPoint(fullTableName, columnName, '1');
28
33
  setOption(value, fkOptions);
29
34
  return {
30
35
  type: 'inline_refs',
@@ -43,6 +48,7 @@ function makeTableEndpoint(columnNames) {
43
48
 
44
49
  function makeTableConstraintFK(_keyword1, endpoint1, _keyword2, tableName, endpoint2, fkOptions) {
45
50
  var value = {};
51
+ var fullTableName = getFullTableName(tableName);
46
52
 
47
53
  if (!endpoint2) {
48
54
  // eslint-disable-next-line no-param-reassign
@@ -55,7 +61,8 @@ function makeTableConstraintFK(_keyword1, endpoint1, _keyword2, tableName, endpo
55
61
 
56
62
  endpoint1.value.relation = '*';
57
63
  endpoint2.value.relation = '1';
58
- endpoint2.value.tableName = _.last(tableName);
64
+ endpoint2.value.tableName = fullTableName.name;
65
+ endpoint2.value.schemaName = fullTableName.schemaName;
59
66
  value.endpoints = [endpoint1.value, endpoint2.value];
60
67
  setOption(value, fkOptions);
61
68
  return {
@@ -72,7 +72,6 @@ exports.KeywordNoCheck = keyword(/NOCHECK/i);
72
72
  exports.KeywordDrop = keyword(/DROP/i);
73
73
  exports.KeywordAlterColumn = keyword(/ALTER COLUMN/i);
74
74
  exports.KeywordGo = keyword(/GO/i);
75
- exports.KeywordDrop = keyword(/DROP/i);
76
75
  exports.KeywordBulkInsert = keyword(/BULK INSERT/i);
77
76
  exports.KeywordInsert = keyword(/INSERT/i);
78
77
  exports.KeywordUpdate = keyword(/UPDATE/i);
@@ -84,6 +83,7 @@ exports.KeywordCollate = keyword(/COLLATE/i);
84
83
  exports.KeywordClose = keyword(/CLOSE/i);
85
84
  exports.KeywordDeny = keyword(/DENY/i);
86
85
  exports.KeywordExecute = keyword(/EXECUTE/i);
86
+ exports.KeywordExec = keyword(/EXEC/i);
87
87
  exports.KeywordGrant = keyword(/GRANT/i);
88
88
  exports.KeywordOpen = keyword(/OPEN/i);
89
89
  exports.KeywordRevoke = keyword(/REVOKE/i);
@@ -97,6 +97,7 @@ exports.KeywordSend = keyword(/SEND/i);
97
97
  exports.KeywordRename = keyword(/RENAME/i);
98
98
  exports.KeywordDelete = keyword(/DELETE/i);
99
99
  exports.KeywordIf = keyword(/IF/i);
100
+ exports.KeywordSP_ADDEXTENDEDPROPERTY = keyword(/sp_addextendedproperty/i);
100
101
  exports.LogicalOpIn = keyword(/IN/i);
101
102
  exports.LogicalOpAnd = keyword(/AND/i);
102
103
  exports.LessThan = word('<');
@@ -105,7 +106,16 @@ exports.LParen = word('(');
105
106
  exports.Comma = word(',');
106
107
  exports.RParen = word(')');
107
108
  exports.DoubleQuote = word('"');
109
+ exports.SingleQuote = word('\'');
108
110
  exports.LBracket = word('[');
109
111
  exports.RBracket = word(']');
110
112
  exports.Equal = word('=');
111
- exports.Semicolon = word(';');
113
+ exports.Semicolon = word(';');
114
+ exports.KeywordAtName = keyword(/@name/i);
115
+ exports.KeywordAtValue = keyword(/@value/i);
116
+ exports.KeywordAtLevel0Type = keyword(/@level0type/i);
117
+ exports.KeywordAtLevel0Name = keyword(/@level0name/i);
118
+ exports.KeywordAtLevel1Type = keyword(/@level1type/i);
119
+ exports.KeywordAtLevel1Name = keyword(/@level1name/i);
120
+ exports.KeywordAtLevel2Type = keyword(/@level2type/i);
121
+ exports.KeywordAtLevel2Name = keyword(/@level2name/i);
@@ -2,10 +2,13 @@
2
2
 
3
3
  var _ = require('lodash');
4
4
 
5
- function findTable(ast, tableName) {
6
- return ast.tables.find(function (_table) {
7
- return _table.name === tableName;
5
+ function findTable(ast, tableName, schemaName) {
6
+ var realSchemaName = schemaName || 'public';
7
+ var table = ast.tables.find(function (t) {
8
+ var targetSchemaName = t.schemaName || 'public';
9
+ return targetSchemaName === realSchemaName && t.name === tableName;
8
10
  });
11
+ return table;
9
12
  }
10
13
 
11
14
  function findField(table, fieldName) {
@@ -15,7 +18,7 @@ function findField(table, fieldName) {
15
18
  }
16
19
 
17
20
  function handleIndexes(index, ast) {
18
- var table = findTable(ast, index.tableName);
21
+ var table = findTable(ast, index.tableName, index.schemaName);
19
22
  table.indexes.push(index);
20
23
  index.tableName = null;
21
24
  }
@@ -37,7 +40,7 @@ function handleTable(table, ast) {
37
40
  }
38
41
 
39
42
  function handleDefaults(dbdefault, ast) {
40
- var table = findTable(ast, dbdefault.tableName);
43
+ var table = findTable(ast, dbdefault.tableName, dbdefault.schemaName);
41
44
  var field = findField(table, dbdefault.fieldName);
42
45
  dbdefault.fieldName = null;
43
46
  dbdefault.tableName = null;
@@ -45,7 +48,7 @@ function handleDefaults(dbdefault, ast) {
45
48
  }
46
49
 
47
50
  function handleEnums(_enum, ast) {
48
- var table = findTable(ast, _enum.tableName);
51
+ var table = findTable(ast, _enum.tableName, _enum.schemaName);
49
52
  var field = findField(table, _enum.fieldName);
50
53
  _enum.name = "".concat(_enum.tableName, "_").concat(_enum.fieldName, "_enum");
51
54
  _enum.fieldName = null;
@@ -56,6 +59,30 @@ function handleEnums(_enum, ast) {
56
59
  }).join(', ');
57
60
  }
58
61
 
62
+ function handleComment(comment, ast) {
63
+ if (comment.type === 'table') handleTableNote(comment, ast);else if (comment.type === 'column') handleFieldNote(comment, ast);
64
+ }
65
+
66
+ function handleTableNote(comment, ast) {
67
+ var schemaName = comment.schemaName;
68
+ if (schemaName === 'dbo') schemaName = null; // treat `dbo` as public schema
69
+
70
+ var foundTable = findTable(ast, comment.tableName, schemaName);
71
+ if (foundTable) foundTable.note = comment.note;
72
+ }
73
+
74
+ function handleFieldNote(comment, ast) {
75
+ var schemaName = comment.schemaName;
76
+ if (schemaName === 'dbo') schemaName = null; // treat `dbo` as public schema
77
+
78
+ var foundTable = findTable(ast, comment.tableName, schemaName);
79
+
80
+ if (foundTable) {
81
+ var foundField = findField(foundTable, comment.columnName);
82
+ if (foundField) foundField.note = comment.note;
83
+ }
84
+ }
85
+
59
86
  function handleStatement(_statements) {
60
87
  var ast = {
61
88
  tables: [],
@@ -87,6 +114,10 @@ function handleStatement(_statements) {
87
114
  handleEnums(statement.value, ast);
88
115
  break;
89
116
 
117
+ case 'comment':
118
+ handleComment(statement.value, ast);
119
+ break;
120
+
90
121
  default:
91
122
  break;
92
123
  }
@@ -18,7 +18,7 @@ var Lang = P.createLanguage({
18
18
  return wss.then(r.Seperator).then(P.sepBy(r.StatementTypes, r.Seperator)).skip(r.Seperator).map(A.handleStatement);
19
19
  },
20
20
  StatementTypes: function StatementTypes(r) {
21
- return P.alt(S.pCreateIndex, S.pCreateTable, S.pAlterTable, r.IgnoredStatementTypes);
21
+ return P.alt(S.pCreateIndex, S.pCreateTable, S.pAlterTable, S.pCommentSyntax, r.IgnoredStatementTypes);
22
22
  },
23
23
  IgnoredStatementTypes: function IgnoredStatementTypes(r) {
24
24
  return P.seq(r.IgnoredStatementSyntax, pIgnore);
@@ -2,31 +2,37 @@
2
2
 
3
3
  var _ = require('lodash');
4
4
 
5
+ var _require = require('../../../utils'),
6
+ getFullTableName = _require.getFullTableName;
7
+
5
8
  function handleRef(tableName, result) {
6
9
  var endpointWithNoTableName = result.value.endpoints.find(function (ele) {
7
10
  return !ele.tableName;
8
11
  });
9
- endpointWithNoTableName.tableName = _.last(tableName);
12
+ endpointWithNoTableName.tableName = tableName.name;
13
+ endpointWithNoTableName.schemaName = tableName.schemaName;
10
14
  }
11
15
 
12
16
  function addTableName(tableName, result) {
13
- result.value.tableName = _.last(tableName);
17
+ result.value.tableName = tableName.name;
18
+ result.value.schemaName = tableName.schemaName;
14
19
  }
15
20
 
16
21
  function handleAlterTableResult(_keyword, tableName, results) {
17
- if (!results) return null; // eslint-disable-next-line consistent-return
22
+ if (!results) return null;
23
+ var fullName = getFullTableName(tableName); // eslint-disable-next-line consistent-return
18
24
 
19
25
  results.forEach(function (result) {
20
26
  if (result) {
21
27
  switch (result.type) {
22
28
  case 'refs':
23
- handleRef(tableName, result);
29
+ handleRef(fullName, result);
24
30
  break;
25
31
 
26
32
  case 'indexes':
27
33
  case 'dbdefault':
28
34
  case 'enums':
29
- addTableName(tableName, result);
35
+ addTableName(fullName, result);
30
36
  break;
31
37
 
32
38
  default:
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ function handleComment(_ref) {
4
+ var note = _ref.note,
5
+ level = _ref.level;
6
+ var type = 'unsupported';
7
+ var schemaName = null,
8
+ tableName = null,
9
+ columnName = null;
10
+
11
+ if (isValidTableNote(level)) {
12
+ schemaName = level[0].name;
13
+ tableName = level[1].name; // Table Comment
14
+
15
+ type = 'table';
16
+ } else if (isValidColumnNote(level)) {
17
+ schemaName = level[0].name;
18
+ tableName = level[1].name;
19
+ columnName = level[2].name;
20
+ type = 'column';
21
+ }
22
+
23
+ return {
24
+ type: 'comment',
25
+ value: {
26
+ type: type,
27
+ note: note,
28
+ schemaName: schemaName,
29
+ tableName: tableName,
30
+ columnName: columnName
31
+ }
32
+ };
33
+ }
34
+
35
+ var isSchema = function isSchema(type) {
36
+ return type.toLowerCase() === 'schema';
37
+ };
38
+
39
+ var isTable = function isTable(type) {
40
+ return type.toLowerCase() === 'table';
41
+ };
42
+
43
+ var isColumn = function isColumn(type) {
44
+ return type.toLowerCase() === 'column';
45
+ };
46
+
47
+ var isValidTableNote = function isValidTableNote(level) {
48
+ return level.length === 2 && isSchema(level[0].type) && isTable(level[1].type);
49
+ };
50
+
51
+ var isValidColumnNote = function isValidColumnNote(level) {
52
+ return level.length === 3 && isSchema(level[0].type) && isTable(level[1].type) && isColumn(level[2].type);
53
+ };
54
+
55
+ module.exports = {
56
+ handleComment: handleComment
57
+ };
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
4
+
5
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+
9
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
10
+
11
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
12
+
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
+
15
+ var P = require('parsimmon');
16
+
17
+ var KP = require('../../../keyword_parsers');
18
+
19
+ var A = require('./actions');
20
+
21
+ var _require = require('../../../utils'),
22
+ makeNode = _require.makeNode;
23
+
24
+ var Lang = P.createLanguage({
25
+ StartComment: function StartComment() {
26
+ return P.seq(KP.KeywordExec, KP.KeywordSP_ADDEXTENDEDPROPERTY);
27
+ },
28
+ EndComment: function EndComment() {
29
+ return P.seq(KP.Semicolon.atMost(1), KP.KeywordGo);
30
+ },
31
+ StartString: function StartString() {
32
+ return P.alt(KP.SingleQuote, P.string("N'"));
33
+ },
34
+ ManyDoubleSingleQuote: function ManyDoubleSingleQuote() {
35
+ return P.string("''");
36
+ },
37
+ NoSingleQuote: function NoSingleQuote() {
38
+ return P.regex(/[^']/);
39
+ },
40
+ StringType: function StringType(r) {
41
+ return P.alt(r.NoSingleQuote, r.ManyDoubleSingleQuote).atLeast(1).map(function (res) {
42
+ return res.join('');
43
+ });
44
+ },
45
+ NVarchar: function NVarchar(r) {
46
+ return r.StartString.then(r.StringType).skip(KP.SingleQuote);
47
+ },
48
+ NameOption: function NameOption(r) {
49
+ return KP.KeywordAtName.skip(KP.Equal).then(r.NVarchar);
50
+ },
51
+ ValueOption: function ValueOption(r) {
52
+ return KP.KeywordAtValue.skip(KP.Equal).then(r.NVarchar);
53
+ },
54
+ Level0Type: function Level0Type(r) {
55
+ return KP.KeywordAtLevel0Type.skip(KP.Equal).then(r.NVarchar);
56
+ },
57
+ Level0Name: function Level0Name(r) {
58
+ return KP.KeywordAtLevel0Name.skip(KP.Equal).then(r.NVarchar);
59
+ },
60
+ Level1Type: function Level1Type(r) {
61
+ return KP.KeywordAtLevel1Type.skip(KP.Equal).then(r.NVarchar);
62
+ },
63
+ Level1Name: function Level1Name(r) {
64
+ return KP.KeywordAtLevel1Name.skip(KP.Equal).then(r.NVarchar);
65
+ },
66
+ Level2Type: function Level2Type(r) {
67
+ return KP.KeywordAtLevel2Type.skip(KP.Equal).then(r.NVarchar);
68
+ },
69
+ Level2Name: function Level2Name(r) {
70
+ return KP.KeywordAtLevel2Name.skip(KP.Equal).then(r.NVarchar);
71
+ },
72
+ Level0Stmt: function Level0Stmt(r) {
73
+ return P.seqObj(['type', r.Level0Type], KP.Comma, ['name', r.Level0Name]);
74
+ },
75
+ Level1Stmt: function Level1Stmt(r) {
76
+ return P.seqObj(['type', r.Level1Type], KP.Comma, ['name', r.Level1Name]);
77
+ },
78
+ Level2Stmt: function Level2Stmt(r) {
79
+ return P.seqObj(['type', r.Level2Type], KP.Comma, ['name', r.Level2Name]);
80
+ },
81
+ Level0Wrapper: function Level0Wrapper(r) {
82
+ return P.alt(P.seq(r.Level0Stmt.skip(KP.Comma), r.Level1Wrapper), r.Level0Stmt).map(function (res) {
83
+ return Array.isArray(res) ? [res[0]].concat(_toConsumableArray(res[1])) : [res];
84
+ }).atMost(1).map(function (res) {
85
+ return res.length === 1 ? res[0] : res;
86
+ });
87
+ },
88
+ Level1Wrapper: function Level1Wrapper(r) {
89
+ return P.alt(P.seq(r.Level1Stmt.skip(KP.Comma), r.Level2Stmt), r.Level1Stmt).map(function (res) {
90
+ return Array.isArray(res) ? res : [res];
91
+ });
92
+ },
93
+ CommentSyntax: function CommentSyntax(r) {
94
+ return P.seqObj(r.StartComment, ['name', r.NameOption], KP.Comma, ['note', r.ValueOption], KP.Comma, ['level', r.Level0Wrapper], r.EndComment).map(A.handleComment).thru(makeNode());
95
+ }
96
+ });
97
+ module.exports = Lang.CommentSyntax;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ var _require = require('../../../utils'),
4
+ getFullTableName = _require.getFullTableName;
5
+
3
6
  function makeIndex(_create, isUnique, _clustered, _index, indexName, _on, tableName, columnNames) {
7
+ var fullTableName = getFullTableName(tableName);
4
8
  var columns = [];
5
9
  columnNames.forEach(function (columnName) {
6
10
  columns.push({
@@ -13,7 +17,8 @@ function makeIndex(_create, isUnique, _clustered, _index, indexName, _on, tableN
13
17
  value: {
14
18
  name: indexName,
15
19
  unique: isUnique ? true : null,
16
- tableName: tableName[tableName.length - 1],
20
+ tableName: fullTableName.name,
21
+ schemaName: fullTableName.schemaName,
17
22
  columns: columns
18
23
  }
19
24
  };
@@ -2,12 +2,15 @@
2
2
 
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
6
 
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
 
9
9
  var _ = require('lodash');
10
10
 
11
+ var _require = require('../../../utils'),
12
+ getFullTableName = _require.getFullTableName;
13
+
11
14
  function createRefFromInlineRef(linesRefs, inlineRefs, fieldName, tableName) {
12
15
  if (!inlineRefs || inlineRefs.length === 0) return;
13
16
  var newRef = {};
@@ -16,7 +19,8 @@ function createRefFromInlineRef(linesRefs, inlineRefs, fieldName, tableName) {
16
19
  newRef.onDelete = inlineRef.onDelete;
17
20
  newRef.endpoints = [];
18
21
  newRef.endpoints.push({
19
- tableName: tableName,
22
+ tableName: tableName.name,
23
+ schemaName: tableName.schemaName,
20
24
  fieldNames: [fieldName],
21
25
  relation: '*'
22
26
  });
@@ -33,7 +37,7 @@ function pushOutEnum(linesEnums, fieldValue, tableName) {
33
37
  if (fieldValue.enums) {
34
38
  var _enum = fieldValue.enums;
35
39
  var fieldType = fieldValue.type;
36
- _enum.name = "".concat(tableName, "_").concat(fieldValue.enums.name);
40
+ _enum.name = "".concat(tableName.schemaName ? "".concat(tableName.schemaName, "_") : '').concat(tableName.name, "_").concat(fieldValue.enums.name);
37
41
  fieldType.type_name = _enum.name;
38
42
  fieldType.args = _enum.values.map(function (value) {
39
43
  return "'".concat(value.name, "'");
@@ -71,7 +75,8 @@ function getLinesValue(lines, tableName) {
71
75
 
72
76
  if (line.type === 'refs') {
73
77
  var ref = line.value;
74
- ref.endpoints[0].tableName = tableName;
78
+ ref.endpoints[0].tableName = tableName.name;
79
+ ref.endpoints[0].schemaName = tableName.schemaName;
75
80
  }
76
81
 
77
82
  value[line.type].push(line.value);
@@ -84,14 +89,11 @@ function getLinesValue(lines, tableName) {
84
89
  }
85
90
 
86
91
  function makeTable(_keyword, tableName, _keyword2, lines) {
87
- var linesValue = getLinesValue(lines, _.last(tableName));
92
+ var fullName = getFullTableName(tableName);
93
+ var linesValue = getLinesValue(lines, fullName);
88
94
  return {
89
95
  type: 'tables',
90
- value: _objectSpread({
91
- name: _.last(tableName)
92
- }, linesValue.value, {
93
- schemaName: tableName.length > 1 ? tableName[tableName.length - 2] : null
94
- })
96
+ value: _objectSpread(_objectSpread({}, fullName), linesValue.value)
95
97
  };
96
98
  }
97
99
 
@@ -6,8 +6,11 @@ var pCreateIndex = require('./create_index/index');
6
6
 
7
7
  var pCreateTable = require('./create_table');
8
8
 
9
+ var pCommentSyntax = require('./comments');
10
+
9
11
  module.exports = {
10
12
  pAlterTable: pAlterTable,
11
13
  pCreateIndex: pCreateIndex,
12
- pCreateTable: pCreateTable
14
+ pCreateTable: pCreateTable,
15
+ pCommentSyntax: pCommentSyntax
13
16
  };
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
4
 
5
5
  var P = require('parsimmon');
6
6
 
7
+ var _ = require('lodash');
8
+
7
9
  var _require = require('./keyword_parsers'),
8
10
  LParen = _require.LParen,
9
11
  RParen = _require.RParen,
@@ -47,4 +49,17 @@ exports.streamline = function (type) {
47
49
  };
48
50
  });
49
51
  };
52
+ };
53
+
54
+ exports.getFullTableName = function (nameList) {
55
+ var schemaName = null;
56
+
57
+ if (nameList.length > 1) {
58
+ schemaName = nameList[nameList.length - 2];
59
+ }
60
+
61
+ return {
62
+ name: _.last(nameList),
63
+ schemaName: schemaName
64
+ };
50
65
  };