@dbml/core 2.6.1 → 3.1.0
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.
- package/lib/export/MysqlExporter.js +3 -3
- package/lib/export/PostgresExporter.js +2 -2
- package/lib/export/SqlServerExporter.js +2 -2
- package/lib/export/index.js +1 -1
- package/lib/import/index.js +1 -1
- package/lib/model_structure/database.js +5 -3
- package/lib/model_structure/enum.js +6 -3
- package/lib/model_structure/enumValue.js +6 -3
- package/lib/model_structure/field.js +6 -3
- package/lib/model_structure/schema.js +6 -3
- package/lib/model_structure/table.js +6 -3
- package/lib/parse/ANTLR/ASTGeneration/AST.js +54 -8
- package/lib/parse/ANTLR/ASTGeneration/ParserErrorListener.js +11 -6
- package/lib/parse/ANTLR/ASTGeneration/constants.js +39 -0
- package/lib/parse/ANTLR/ASTGeneration/index.js +33 -11
- package/lib/parse/ANTLR/ASTGeneration/mysql/MySQLASTGen.js +1148 -0
- package/lib/parse/ANTLR/ASTGeneration/mysql/MySQLBaseCommon.js +31 -0
- package/lib/parse/ANTLR/ASTGeneration/mysql/MySQLBaseLexer.js +40 -0
- package/lib/parse/ANTLR/ASTGeneration/mysql/MySQLBaseRecognizer.js +32 -0
- package/lib/parse/ANTLR/ASTGeneration/postgres/PostgresASTGen.js +64 -62
- package/lib/parse/ANTLR/parsers/mysql/MySQLLexer.g4 +1357 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLLexer.interp +3515 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLLexer.js +1211 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLLexer.tokens +2300 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLParser.g4 +3494 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLParser.interp +2694 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLParser.js +3 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLParser.tokens +2300 -0
- package/lib/parse/ANTLR/parsers/mysql/MySQLParserVisitor.js +4360 -0
- package/lib/parse/ANTLR/parsers/mysql/predefined.tokens +744 -0
- package/lib/parse/Parser.js +73 -38
- package/package.json +3 -2
- package/types/parse/Parser.d.ts +3 -1
|
@@ -56,13 +56,13 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
56
56
|
if (field.dbdefault.type === 'expression') {
|
|
57
57
|
line += " DEFAULT (".concat(field.dbdefault.value, ")");
|
|
58
58
|
} else if (field.dbdefault.type === 'string') {
|
|
59
|
-
line += " DEFAULT
|
|
59
|
+
line += " DEFAULT '".concat(field.dbdefault.value, "'");
|
|
60
60
|
} else {
|
|
61
61
|
line += " DEFAULT ".concat(field.dbdefault.value);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
if (field.note) {
|
|
65
|
-
line += " COMMENT '".concat(field.note.replace(/'/g, "
|
|
65
|
+
line += " COMMENT '".concat(field.note.replace(/'/g, "''"), "'");
|
|
66
66
|
}
|
|
67
67
|
return line;
|
|
68
68
|
});
|
|
@@ -246,7 +246,7 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
246
246
|
if (comment.type === 'table') {
|
|
247
247
|
var table = model.tables[comment.tableId];
|
|
248
248
|
var schema = model.schemas[table.schemaId];
|
|
249
|
-
line += "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(schema, model) ? "`".concat(schema.name, "`.") : '', "`").concat(table.name, "` COMMENT = '").concat(table.note.replace(/'/g, "
|
|
249
|
+
line += "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(schema, model) ? "`".concat(schema.name, "`.") : '', "`").concat(table.name, "` COMMENT = '").concat(table.note.replace(/'/g, "''"), "'");
|
|
250
250
|
}
|
|
251
251
|
line += ';\n';
|
|
252
252
|
return line;
|
|
@@ -269,13 +269,13 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
269
269
|
switch (comment.type) {
|
|
270
270
|
case 'table':
|
|
271
271
|
{
|
|
272
|
-
line += " TABLE ".concat((0, _utils.shouldPrintSchema)(schema, model) ? "\"".concat(schema.name, "\".") : '', "\"").concat(table.name, "\" IS '").concat(table.note.replace(/'/g, "
|
|
272
|
+
line += " TABLE ".concat((0, _utils.shouldPrintSchema)(schema, model) ? "\"".concat(schema.name, "\".") : '', "\"").concat(table.name, "\" IS '").concat(table.note.replace(/'/g, "''"), "'");
|
|
273
273
|
break;
|
|
274
274
|
}
|
|
275
275
|
case 'column':
|
|
276
276
|
{
|
|
277
277
|
var field = model.fields[comment.fieldId];
|
|
278
|
-
line += " COLUMN ".concat((0, _utils.shouldPrintSchema)(schema, model) ? "\"".concat(schema.name, "\".") : '', "\"").concat(table.name, "\".\"").concat(field.name, "\" IS '").concat(field.note.replace(/'/g, "
|
|
278
|
+
line += " COLUMN ".concat((0, _utils.shouldPrintSchema)(schema, model) ? "\"".concat(schema.name, "\".") : '', "\"").concat(table.name, "\".\"").concat(field.name, "\" IS '").concat(field.note.replace(/'/g, "''"), "'");
|
|
279
279
|
break;
|
|
280
280
|
}
|
|
281
281
|
default:
|
|
@@ -246,7 +246,7 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
246
246
|
case 'table':
|
|
247
247
|
{
|
|
248
248
|
line += "@name = N'Table_Description',\n";
|
|
249
|
-
line += "@value = '".concat(table.note.replace(/'/g, "
|
|
249
|
+
line += "@value = '".concat(table.note.replace(/'/g, "''"), "',\n");
|
|
250
250
|
line += "@level0type = N'Schema', @level0name = '".concat((0, _utils.shouldPrintSchema)(schema, model) ? "".concat(schema.name) : 'dbo', "',\n");
|
|
251
251
|
line += "@level1type = N'Table', @level1name = '".concat(table.name, "';\n");
|
|
252
252
|
break;
|
|
@@ -255,7 +255,7 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
255
255
|
{
|
|
256
256
|
var field = model.fields[comment.fieldId];
|
|
257
257
|
line += "@name = N'Column_Description',\n";
|
|
258
|
-
line += "@value = '".concat(field.note.replace(/'/g, "
|
|
258
|
+
line += "@value = '".concat(field.note.replace(/'/g, "''"), "',\n");
|
|
259
259
|
line += "@level0type = N'Schema', @level0name = '".concat((0, _utils.shouldPrintSchema)(schema, model) ? "".concat(schema.name) : 'dbo', "',\n");
|
|
260
260
|
line += "@level1type = N'Table', @level1name = '".concat(table.name, "',\n");
|
|
261
261
|
line += "@level2type = N'Column', @level2name = '".concat(field.name, "';\n");
|
package/lib/export/index.js
CHANGED
|
@@ -8,7 +8,7 @@ var _ModelExporter = _interopRequireDefault(require("./ModelExporter"));
|
|
|
8
8
|
var _Parser = _interopRequireDefault(require("../parse/Parser"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
10
|
function _export(str, format) {
|
|
11
|
-
var database = _Parser["default"].parse(str, '
|
|
11
|
+
var database = new _Parser["default"]().parse(str, 'dbmlv2');
|
|
12
12
|
return _ModelExporter["default"]["export"](database.normalize(), format);
|
|
13
13
|
}
|
|
14
14
|
var _default = {
|
package/lib/import/index.js
CHANGED
|
@@ -8,7 +8,7 @@ var _Parser = _interopRequireDefault(require("../parse/Parser"));
|
|
|
8
8
|
var _ModelExporter = _interopRequireDefault(require("../export/ModelExporter"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
10
|
function _import(str, format) {
|
|
11
|
-
var database = _Parser["default"].parse(str, format);
|
|
11
|
+
var database = new _Parser["default"]().parse(str, format);
|
|
12
12
|
var dbml = _ModelExporter["default"]["export"](database.normalize(), 'dbml');
|
|
13
13
|
return dbml;
|
|
14
14
|
}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
-
var _lodash =
|
|
8
|
+
var _lodash = _interopRequireWildcard(require("lodash"));
|
|
9
9
|
var _schema = _interopRequireDefault(require("./schema"));
|
|
10
10
|
var _ref2 = _interopRequireDefault(require("./ref"));
|
|
11
11
|
var _enum2 = _interopRequireDefault(require("./enum"));
|
|
@@ -15,6 +15,8 @@ var _element = _interopRequireDefault(require("./element"));
|
|
|
15
15
|
var _config = require("./config");
|
|
16
16
|
var _dbState = _interopRequireDefault(require("./dbState"));
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
20
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
21
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
20
22
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -55,8 +57,8 @@ var Database = /*#__PURE__*/function (_Element) {
|
|
|
55
57
|
_this.generateId();
|
|
56
58
|
_this.hasDefaultSchema = false;
|
|
57
59
|
_this.schemas = [];
|
|
58
|
-
_this.note = project.note ? project
|
|
59
|
-
_this.noteToken = project.note ? project
|
|
60
|
+
_this.note = project.note ? (0, _lodash.get)(project, 'note.value', project.note) : null;
|
|
61
|
+
_this.noteToken = project.note ? (0, _lodash.get)(project, 'note.token', project.noteToken) : null;
|
|
60
62
|
_this.databaseType = project.database_type;
|
|
61
63
|
_this.name = project.name;
|
|
62
64
|
_this.aliases = aliases;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _lodash = require("lodash");
|
|
8
9
|
var _element = _interopRequireDefault(require("./element"));
|
|
9
10
|
var _enumValue = _interopRequireDefault(require("./enumValue"));
|
|
10
11
|
var _utils = require("./utils");
|
|
@@ -34,15 +35,17 @@ var Enum = /*#__PURE__*/function (_Element) {
|
|
|
34
35
|
token = _ref.token,
|
|
35
36
|
values = _ref.values,
|
|
36
37
|
note = _ref.note,
|
|
37
|
-
schema = _ref.schema
|
|
38
|
+
schema = _ref.schema,
|
|
39
|
+
_ref$noteToken = _ref.noteToken,
|
|
40
|
+
noteToken = _ref$noteToken === void 0 ? null : _ref$noteToken;
|
|
38
41
|
_classCallCheck(this, Enum);
|
|
39
42
|
_this = _super.call(this, token);
|
|
40
43
|
if (!name) {
|
|
41
44
|
_this.error('Enum must have a name');
|
|
42
45
|
}
|
|
43
46
|
_this.name = name;
|
|
44
|
-
_this.note = note ? note
|
|
45
|
-
_this.noteToken = note ? note
|
|
47
|
+
_this.note = note ? (0, _lodash.get)(note, 'value', note) : null;
|
|
48
|
+
_this.noteToken = note ? (0, _lodash.get)(note, 'token', noteToken) : null;
|
|
46
49
|
_this.values = [];
|
|
47
50
|
_this.fields = [];
|
|
48
51
|
_this.schema = schema;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _lodash = require("lodash");
|
|
8
9
|
var _element = _interopRequireDefault(require("./element"));
|
|
9
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
11
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -31,15 +32,17 @@ var EnumValue = /*#__PURE__*/function (_Element) {
|
|
|
31
32
|
name = _ref.name,
|
|
32
33
|
token = _ref.token,
|
|
33
34
|
note = _ref.note,
|
|
34
|
-
_enum = _ref._enum
|
|
35
|
+
_enum = _ref._enum,
|
|
36
|
+
_ref$noteToken = _ref.noteToken,
|
|
37
|
+
noteToken = _ref$noteToken === void 0 ? null : _ref$noteToken;
|
|
35
38
|
_classCallCheck(this, EnumValue);
|
|
36
39
|
_this = _super.call(this, token);
|
|
37
40
|
if (!name) {
|
|
38
41
|
_this.error('Enum value must have a name');
|
|
39
42
|
}
|
|
40
43
|
_this.name = name;
|
|
41
|
-
_this.note = note ? note
|
|
42
|
-
_this.noteToken = note ? note
|
|
44
|
+
_this.note = note ? (0, _lodash.get)(note, 'value', note) : null;
|
|
45
|
+
_this.noteToken = note ? (0, _lodash.get)(note, 'token', noteToken) : null;
|
|
43
46
|
_this._enum = _enum;
|
|
44
47
|
_this.dbState = _this._enum.dbState;
|
|
45
48
|
_this.generateId();
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _lodash = require("lodash");
|
|
8
9
|
var _element = _interopRequireDefault(require("./element"));
|
|
9
10
|
var _config = require("./config");
|
|
10
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -39,7 +40,9 @@ var Field = /*#__PURE__*/function (_Element) {
|
|
|
39
40
|
dbdefault = _ref.dbdefault,
|
|
40
41
|
increment = _ref.increment,
|
|
41
42
|
_ref$table = _ref.table,
|
|
42
|
-
table = _ref$table === void 0 ? {} : _ref$table
|
|
43
|
+
table = _ref$table === void 0 ? {} : _ref$table,
|
|
44
|
+
_ref$noteToken = _ref.noteToken,
|
|
45
|
+
noteToken = _ref$noteToken === void 0 ? null : _ref$noteToken;
|
|
43
46
|
_classCallCheck(this, Field);
|
|
44
47
|
_this = _super.call(this, token);
|
|
45
48
|
if (!name) {
|
|
@@ -54,8 +57,8 @@ var Field = /*#__PURE__*/function (_Element) {
|
|
|
54
57
|
_this.unique = unique;
|
|
55
58
|
_this.pk = pk;
|
|
56
59
|
_this.not_null = notNull;
|
|
57
|
-
_this.note = note ? note
|
|
58
|
-
_this.noteToken = note ? note
|
|
60
|
+
_this.note = note ? (0, _lodash.get)(note, 'value', note) : null;
|
|
61
|
+
_this.noteToken = note ? (0, _lodash.get)(note, 'token', noteToken) : null;
|
|
59
62
|
_this.dbdefault = dbdefault;
|
|
60
63
|
_this.increment = increment;
|
|
61
64
|
_this.endpoints = [];
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _lodash = require("lodash");
|
|
8
9
|
var _table = _interopRequireDefault(require("./table"));
|
|
9
10
|
var _element = _interopRequireDefault(require("./element"));
|
|
10
11
|
var _enum2 = _interopRequireDefault(require("./enum"));
|
|
@@ -46,7 +47,9 @@ var Schema = /*#__PURE__*/function (_Element) {
|
|
|
46
47
|
tableGroups = _ref$tableGroups === void 0 ? [] : _ref$tableGroups,
|
|
47
48
|
token = _ref.token,
|
|
48
49
|
_ref$database = _ref.database,
|
|
49
|
-
database = _ref$database === void 0 ? {} : _ref$database
|
|
50
|
+
database = _ref$database === void 0 ? {} : _ref$database,
|
|
51
|
+
_ref$noteToken = _ref.noteToken,
|
|
52
|
+
noteToken = _ref$noteToken === void 0 ? null : _ref$noteToken;
|
|
50
53
|
_classCallCheck(this, Schema);
|
|
51
54
|
_this = _super.call(this, token);
|
|
52
55
|
_this.tables = [];
|
|
@@ -54,8 +57,8 @@ var Schema = /*#__PURE__*/function (_Element) {
|
|
|
54
57
|
_this.tableGroups = [];
|
|
55
58
|
_this.refs = [];
|
|
56
59
|
_this.name = name;
|
|
57
|
-
_this.note = note ? note
|
|
58
|
-
_this.noteToken = note ? note
|
|
60
|
+
_this.note = note ? (0, _lodash.get)(note, 'value', note) : null;
|
|
61
|
+
_this.noteToken = note ? (0, _lodash.get)(note, 'token', noteToken) : null;
|
|
59
62
|
_this.alias = alias;
|
|
60
63
|
_this.database = database;
|
|
61
64
|
_this.dbState = _this.database.dbState;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _lodash = require("lodash");
|
|
8
9
|
var _element = _interopRequireDefault(require("./element"));
|
|
9
10
|
var _field = _interopRequireDefault(require("./field"));
|
|
10
11
|
var _indexes = _interopRequireDefault(require("./indexes"));
|
|
@@ -42,13 +43,15 @@ var Table = /*#__PURE__*/function (_Element) {
|
|
|
42
43
|
_ref$schema = _ref.schema,
|
|
43
44
|
schema = _ref$schema === void 0 ? {} : _ref$schema,
|
|
44
45
|
token = _ref.token,
|
|
45
|
-
headerColor = _ref.headerColor
|
|
46
|
+
headerColor = _ref.headerColor,
|
|
47
|
+
_ref$noteToken = _ref.noteToken,
|
|
48
|
+
noteToken = _ref$noteToken === void 0 ? null : _ref$noteToken;
|
|
46
49
|
_classCallCheck(this, Table);
|
|
47
50
|
_this = _super.call(this, token);
|
|
48
51
|
_this.name = name;
|
|
49
52
|
_this.alias = alias;
|
|
50
|
-
_this.note = note ? note
|
|
51
|
-
_this.noteToken = note ? note
|
|
53
|
+
_this.note = note ? (0, _lodash.get)(note, 'value', note) : null;
|
|
54
|
+
_this.noteToken = note ? (0, _lodash.get)(note, 'token', noteToken) : null;
|
|
52
55
|
_this.headerColor = headerColor;
|
|
53
56
|
_this.fields = [];
|
|
54
57
|
_this.indexes = [];
|
|
@@ -12,6 +12,15 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
12
12
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
13
13
|
/* eslint-disable max-classes-per-file */
|
|
14
14
|
var Index = /*#__PURE__*/function () {
|
|
15
|
+
/**
|
|
16
|
+
* @param {{
|
|
17
|
+
* name: string,
|
|
18
|
+
* unique: boolean,
|
|
19
|
+
* pk: boolean,
|
|
20
|
+
* type: string,
|
|
21
|
+
* columns: {value: string, type: 'column' | 'string' | 'expression'}[],
|
|
22
|
+
* }} param0
|
|
23
|
+
*/
|
|
15
24
|
function Index(_ref) {
|
|
16
25
|
var name = _ref.name,
|
|
17
26
|
unique = _ref.unique,
|
|
@@ -31,7 +40,7 @@ var Index = /*#__PURE__*/function () {
|
|
|
31
40
|
/** @type {boolean} */
|
|
32
41
|
this.pk = pk;
|
|
33
42
|
|
|
34
|
-
/** @type {{value: string, type: string}[]} */
|
|
43
|
+
/** @type {{value: string, type: 'column' | 'string' | 'expression'}[]} */
|
|
35
44
|
this.columns = columns;
|
|
36
45
|
}
|
|
37
46
|
_createClass(Index, [{
|
|
@@ -53,6 +62,18 @@ var Field = /*#__PURE__*/function () {
|
|
|
53
62
|
/** @type {boolean} */
|
|
54
63
|
// fk;
|
|
55
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @param {{
|
|
67
|
+
* name: string,
|
|
68
|
+
* type: {type_name: string, schemaName: string},
|
|
69
|
+
* not_null: boolean,
|
|
70
|
+
* increment: boolean,
|
|
71
|
+
* dbdefault: {value: string, type: 'string' | 'number' | 'boolean' | 'expression'},
|
|
72
|
+
* unique: boolean,
|
|
73
|
+
* pk: boolean,
|
|
74
|
+
* note: {value: string}
|
|
75
|
+
* }} param0
|
|
76
|
+
*/
|
|
56
77
|
function Field(_ref2) {
|
|
57
78
|
var name = _ref2.name,
|
|
58
79
|
type = _ref2.type,
|
|
@@ -75,7 +96,7 @@ var Field = /*#__PURE__*/function () {
|
|
|
75
96
|
/** @type {boolean} */
|
|
76
97
|
this.increment = increment;
|
|
77
98
|
|
|
78
|
-
/** @type {{value: string, type: 'string'}} */
|
|
99
|
+
/** @type {{value: string, type: 'string' | 'number' | 'boolean' | 'expression'}} */
|
|
79
100
|
this.dbdefault = dbdefault;
|
|
80
101
|
|
|
81
102
|
/** @type {boolean} */
|
|
@@ -84,7 +105,7 @@ var Field = /*#__PURE__*/function () {
|
|
|
84
105
|
/** @type {boolean} */
|
|
85
106
|
this.pk = pk;
|
|
86
107
|
|
|
87
|
-
/** @type {string} */
|
|
108
|
+
/** @type {{value: string}} */
|
|
88
109
|
this.note = note;
|
|
89
110
|
}
|
|
90
111
|
_createClass(Field, [{
|
|
@@ -106,6 +127,15 @@ var Field = /*#__PURE__*/function () {
|
|
|
106
127
|
}();
|
|
107
128
|
exports.Field = Field;
|
|
108
129
|
var Table = /*#__PURE__*/function () {
|
|
130
|
+
/**
|
|
131
|
+
* @param {{
|
|
132
|
+
* name: string,
|
|
133
|
+
* schemaName: string,
|
|
134
|
+
* fields: Field[],
|
|
135
|
+
* indexes: Index[],
|
|
136
|
+
* note: {value: string}
|
|
137
|
+
* }} param0
|
|
138
|
+
*/
|
|
109
139
|
function Table(_ref3) {
|
|
110
140
|
var name = _ref3.name,
|
|
111
141
|
schemaName = _ref3.schemaName,
|
|
@@ -119,13 +149,13 @@ var Table = /*#__PURE__*/function () {
|
|
|
119
149
|
/** @type {string} */
|
|
120
150
|
this.schemaName = schemaName;
|
|
121
151
|
|
|
122
|
-
/** @type {
|
|
152
|
+
/** @type {Field[]} */
|
|
123
153
|
this.fields = fields || [];
|
|
124
154
|
|
|
125
|
-
/** @type {
|
|
155
|
+
/** @type {Index[]} */
|
|
126
156
|
this.indexes = indexes || [];
|
|
127
157
|
|
|
128
|
-
/** @type {string} */
|
|
158
|
+
/** @type {{value: string}} */
|
|
129
159
|
this.note = note;
|
|
130
160
|
}
|
|
131
161
|
_createClass(Table, [{
|
|
@@ -149,6 +179,14 @@ var Table = /*#__PURE__*/function () {
|
|
|
149
179
|
}();
|
|
150
180
|
exports.Table = Table;
|
|
151
181
|
var Endpoint = /*#__PURE__*/function () {
|
|
182
|
+
/**
|
|
183
|
+
* @param {{
|
|
184
|
+
* tableName: string,
|
|
185
|
+
* schemaName: string,
|
|
186
|
+
* fieldNames: string[],
|
|
187
|
+
* relation: '*' | '1'
|
|
188
|
+
* }} param0
|
|
189
|
+
*/
|
|
152
190
|
function Endpoint(_ref4) {
|
|
153
191
|
var tableName = _ref4.tableName,
|
|
154
192
|
schemaName = _ref4.schemaName,
|
|
@@ -164,7 +202,7 @@ var Endpoint = /*#__PURE__*/function () {
|
|
|
164
202
|
/** @type {string[]} */
|
|
165
203
|
this.fieldNames = fieldNames;
|
|
166
204
|
|
|
167
|
-
/** @type {
|
|
205
|
+
/** @type {'*' | '1'} */
|
|
168
206
|
this.relation = relation;
|
|
169
207
|
}
|
|
170
208
|
_createClass(Endpoint, [{
|
|
@@ -182,6 +220,14 @@ var Endpoint = /*#__PURE__*/function () {
|
|
|
182
220
|
}();
|
|
183
221
|
exports.Endpoint = Endpoint;
|
|
184
222
|
var Ref = /*#__PURE__*/function () {
|
|
223
|
+
/**
|
|
224
|
+
* @param {{
|
|
225
|
+
* name: string,
|
|
226
|
+
* endpoints: Endpoint[],
|
|
227
|
+
* onDelete: string,
|
|
228
|
+
* onUpdate: string
|
|
229
|
+
* }} param0
|
|
230
|
+
*/
|
|
185
231
|
function Ref(_ref5) {
|
|
186
232
|
var name = _ref5.name,
|
|
187
233
|
endpoints = _ref5.endpoints,
|
|
@@ -191,7 +237,7 @@ var Ref = /*#__PURE__*/function () {
|
|
|
191
237
|
/** @type {string} */
|
|
192
238
|
this.name = name;
|
|
193
239
|
|
|
194
|
-
/** @type {
|
|
240
|
+
/** @type {Endpoint[]} */
|
|
195
241
|
this.endpoints = endpoints || [];
|
|
196
242
|
|
|
197
243
|
/** @type {string} */
|
|
@@ -23,16 +23,21 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
23
23
|
var ParserErrorListener = /*#__PURE__*/function (_antlr4$error$ErrorLi) {
|
|
24
24
|
_inherits(ParserErrorListener, _antlr4$error$ErrorLi);
|
|
25
25
|
var _super = _createSuper(ParserErrorListener);
|
|
26
|
-
function ParserErrorListener() {
|
|
26
|
+
function ParserErrorListener(args) {
|
|
27
|
+
var _this;
|
|
27
28
|
_classCallCheck(this, ParserErrorListener);
|
|
28
|
-
|
|
29
|
+
_this = _super.call(this, args);
|
|
30
|
+
|
|
31
|
+
/** @type {SyntaxError[]} */
|
|
32
|
+
_this.errors = [];
|
|
33
|
+
return _this;
|
|
29
34
|
}
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line no-unused-vars
|
|
30
37
|
_createClass(ParserErrorListener, [{
|
|
31
38
|
key: "syntaxError",
|
|
32
|
-
value:
|
|
33
|
-
|
|
34
|
-
function syntaxError(recognizer, offendingSymbol, line, column, msg, err) {
|
|
35
|
-
throw new _SyntaxError["default"](line, column, msg);
|
|
39
|
+
value: function syntaxError(recognizer, offendingSymbol, line, column, msg, err) {
|
|
40
|
+
this.errors.push(new _SyntaxError["default"](line, column, msg));
|
|
36
41
|
}
|
|
37
42
|
}]);
|
|
38
43
|
return ParserErrorListener;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TABLE_CONSTRAINT_KIND = exports.DATA_TYPE = exports.CONSTRAINT_TYPE = exports.COLUMN_CONSTRAINT_KIND = void 0;
|
|
7
|
+
var TABLE_CONSTRAINT_KIND = {
|
|
8
|
+
FIELD: 'field',
|
|
9
|
+
INDEX: 'index',
|
|
10
|
+
FK: 'fk',
|
|
11
|
+
UNIQUE: 'unique',
|
|
12
|
+
PK: 'pk'
|
|
13
|
+
};
|
|
14
|
+
exports.TABLE_CONSTRAINT_KIND = TABLE_CONSTRAINT_KIND;
|
|
15
|
+
var COLUMN_CONSTRAINT_KIND = {
|
|
16
|
+
NOT_NULL: 'not_null',
|
|
17
|
+
UNIQUE: 'unique',
|
|
18
|
+
PK: 'pk',
|
|
19
|
+
DEFAULT: 'dbdefault',
|
|
20
|
+
INCREMENT: 'increment',
|
|
21
|
+
INLINE_REF: 'inline_ref',
|
|
22
|
+
NOTE: 'note'
|
|
23
|
+
};
|
|
24
|
+
exports.COLUMN_CONSTRAINT_KIND = COLUMN_CONSTRAINT_KIND;
|
|
25
|
+
var DATA_TYPE = {
|
|
26
|
+
STRING: 'string',
|
|
27
|
+
NUMBER: 'number',
|
|
28
|
+
BOOLEAN: 'boolean',
|
|
29
|
+
EXPRESSION: 'expression'
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// legacy - for compatibility with model_structure
|
|
33
|
+
exports.DATA_TYPE = DATA_TYPE;
|
|
34
|
+
var CONSTRAINT_TYPE = {
|
|
35
|
+
COLUMN: 'column',
|
|
36
|
+
STRING: 'string',
|
|
37
|
+
EXPRESSION: 'expression'
|
|
38
|
+
};
|
|
39
|
+
exports.CONSTRAINT_TYPE = CONSTRAINT_TYPE;
|
|
@@ -8,6 +8,9 @@ var _antlr = _interopRequireDefault(require("antlr4"));
|
|
|
8
8
|
var _PostgreSQLLexer = _interopRequireDefault(require("../parsers/postgresql/PostgreSQLLexer"));
|
|
9
9
|
var _PostgreSQLParser = _interopRequireDefault(require("../parsers/postgresql/PostgreSQLParser"));
|
|
10
10
|
var _PostgresASTGen = _interopRequireDefault(require("./postgres/PostgresASTGen"));
|
|
11
|
+
var _MySqlLexer = _interopRequireDefault(require("../parsers/mysql/MySqlLexer"));
|
|
12
|
+
var _MySqlParser = _interopRequireDefault(require("../parsers/mysql/MySqlParser"));
|
|
13
|
+
var _MySQLASTGen = _interopRequireDefault(require("./mysql/MySQLASTGen"));
|
|
11
14
|
var _ParserErrorListener = _interopRequireDefault(require("./ParserErrorListener"));
|
|
12
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
16
|
/* eslint-disable import/no-named-as-default-member */
|
|
@@ -16,17 +19,36 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
16
19
|
function parse(input, format) {
|
|
17
20
|
var chars = new _antlr["default"].InputStream(input);
|
|
18
21
|
var database = null;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
var errorListener = new _ParserErrorListener["default"]();
|
|
23
|
+
switch (format) {
|
|
24
|
+
case 'postgres':
|
|
25
|
+
{
|
|
26
|
+
var lexer = new _PostgreSQLLexer["default"](chars);
|
|
27
|
+
var tokens = new _antlr["default"].CommonTokenStream(lexer);
|
|
28
|
+
var parser = new _PostgreSQLParser["default"](tokens);
|
|
29
|
+
parser.buildParseTrees = true;
|
|
30
|
+
parser.removeErrorListeners();
|
|
31
|
+
parser.addErrorListener(errorListener);
|
|
32
|
+
var parseTree = parser.root();
|
|
33
|
+
database = parseTree.accept(new _PostgresASTGen["default"]());
|
|
34
|
+
if (errorListener.errors.length) throw errorListener.errors;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
case 'mysql':
|
|
38
|
+
{
|
|
39
|
+
var _lexer = new _MySqlLexer["default"](chars);
|
|
40
|
+
var _tokens = new _antlr["default"].CommonTokenStream(_lexer);
|
|
41
|
+
var _parser = new _MySqlParser["default"](_tokens);
|
|
42
|
+
_parser.buildParseTrees = true;
|
|
43
|
+
_parser.removeErrorListeners();
|
|
44
|
+
_parser.addErrorListener(errorListener);
|
|
45
|
+
var _parseTree = _parser.root();
|
|
46
|
+
database = _parseTree.accept(new _MySQLASTGen["default"]());
|
|
47
|
+
if (errorListener.errors.length) throw errorListener.errors;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
default:
|
|
51
|
+
throw new Error("Format not supported: ".concat(format));
|
|
30
52
|
}
|
|
31
53
|
return database;
|
|
32
54
|
}
|