@dbml/core 2.4.2 → 2.4.3
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 +11 -42
- package/lib/export/PostgresExporter.js +13 -43
- package/lib/export/SqlServerExporter.js +11 -42
- package/lib/model_structure/endpoint.js +38 -2
- package/lib/parse/mssql/fk_definition/actions.js +4 -2
- package/lib/parse/postgresParser.js +8 -8
- package/lib/parse/postgresql/Base_rules.pegjs +14 -0
- package/lib/parse/postgresql/Commands/Create_table/Create_table_normal.pegjs +9 -6
- package/lib/parse/postgresql/parser.pegjs +1 -0
- package/package.json +2 -2
|
@@ -156,18 +156,18 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
156
156
|
}
|
|
157
157
|
}, {
|
|
158
158
|
key: "buildTableManyToMany",
|
|
159
|
-
value: function buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, tableName) {
|
|
160
|
-
var line = "CREATE TABLE `".concat(tableName, "` (\n");
|
|
159
|
+
value: function buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, tableName, refEndpointSchema, model) {
|
|
160
|
+
var line = "CREATE TABLE ".concat((0, _utils.shouldPrintSchema)(refEndpointSchema, model) ? "`".concat(refEndpointSchema.name, "`.") : '', "`").concat(tableName, "` (\n");
|
|
161
161
|
|
|
162
162
|
var key1s = _toConsumableArray(firstTableFieldsMap.keys()).join('`, `');
|
|
163
163
|
|
|
164
164
|
var key2s = _toConsumableArray(secondTableFieldsMap.keys()).join('`, `');
|
|
165
165
|
|
|
166
166
|
firstTableFieldsMap.forEach(function (fieldType, fieldName) {
|
|
167
|
-
line += " `".concat(fieldName, "` ").concat(fieldType, "
|
|
167
|
+
line += " `".concat(fieldName, "` ").concat(fieldType, ",\n");
|
|
168
168
|
});
|
|
169
169
|
secondTableFieldsMap.forEach(function (fieldType, fieldName) {
|
|
170
|
-
line += " `".concat(fieldName, "` ").concat(fieldType, "
|
|
170
|
+
line += " `".concat(fieldName, "` ").concat(fieldType, ",\n");
|
|
171
171
|
});
|
|
172
172
|
line += " PRIMARY KEY (`".concat(key1s, "`, `").concat(key2s, "`)\n");
|
|
173
173
|
line += ');\n\n';
|
|
@@ -175,34 +175,15 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
175
175
|
}
|
|
176
176
|
}, {
|
|
177
177
|
key: "buildForeignKeyManyToMany",
|
|
178
|
-
value: function buildForeignKeyManyToMany(fieldsMap, foreignEndpointFields, refEndpointTableName, foreignEndpointTableName,
|
|
178
|
+
value: function buildForeignKeyManyToMany(fieldsMap, foreignEndpointFields, refEndpointTableName, foreignEndpointTableName, refEndpointSchema, foreignEndpointSchema, model) {
|
|
179
179
|
var refEndpointFields = _toConsumableArray(fieldsMap.keys()).join('`, `');
|
|
180
180
|
|
|
181
|
-
var line = "ALTER TABLE `".concat(refEndpointTableName, "` ADD FOREIGN KEY (`").concat(refEndpointFields, "`) REFERENCES ").concat((0, _utils.shouldPrintSchema)(
|
|
182
|
-
return line;
|
|
183
|
-
}
|
|
184
|
-
}, {
|
|
185
|
-
key: "buildIndexManytoMany",
|
|
186
|
-
value: function buildIndexManytoMany(fieldsMap, newTableName, tableRefName, usedIndexNames) {
|
|
187
|
-
var newIndexName = "".concat(newTableName, "_").concat(tableRefName);
|
|
188
|
-
var count = 1;
|
|
189
|
-
|
|
190
|
-
while (usedIndexNames.has(newIndexName)) {
|
|
191
|
-
newIndexName = "".concat(newTableName, "_").concat(tableRefName, "(").concat(count, ")");
|
|
192
|
-
count += 1;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
usedIndexNames.add(newIndexName);
|
|
196
|
-
|
|
197
|
-
var indexFields = _toConsumableArray(fieldsMap.keys()).join('`, `');
|
|
198
|
-
|
|
199
|
-
var line = "CREATE INDEX `idx_".concat(newIndexName, "` ON `").concat(newTableName, "` (");
|
|
200
|
-
line += "`".concat(indexFields, "`);\n\n");
|
|
181
|
+
var line = "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(refEndpointSchema, model) ? "`".concat(refEndpointSchema.name, "`.") : '', "`").concat(refEndpointTableName, "` ADD FOREIGN KEY (`").concat(refEndpointFields, "`) REFERENCES ").concat((0, _utils.shouldPrintSchema)(foreignEndpointSchema, model) ? "`".concat(foreignEndpointSchema.name, "`.") : '', "`").concat(foreignEndpointTableName, "` ").concat(foreignEndpointFields, ";\n\n");
|
|
201
182
|
return line;
|
|
202
183
|
}
|
|
203
184
|
}, {
|
|
204
185
|
key: "exportRefs",
|
|
205
|
-
value: function exportRefs(refIds, model, usedTableNames
|
|
186
|
+
value: function exportRefs(refIds, model, usedTableNames) {
|
|
206
187
|
var _this = this;
|
|
207
188
|
|
|
208
189
|
var strArr = refIds.map(function (refId) {
|
|
@@ -232,18 +213,9 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
232
213
|
var firstTableFieldsMap = (0, _utils.buildJunctionFields1)(refEndpoint.fieldIds, model);
|
|
233
214
|
var secondTableFieldsMap = (0, _utils.buildJunctionFields2)(foreignEndpoint.fieldIds, model, firstTableFieldsMap);
|
|
234
215
|
var newTableName = (0, _utils.buildNewTableName)(refEndpointTable.name, foreignEndpointTable.name, usedTableNames);
|
|
235
|
-
line += _this.buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, newTableName);
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
line += _this.buildIndexManytoMany(firstTableFieldsMap, newTableName, refEndpointTable.name, usedIndexNames);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
if (secondTableFieldsMap.size > 1) {
|
|
242
|
-
line += _this.buildIndexManytoMany(secondTableFieldsMap, newTableName, foreignEndpointTable.name, usedIndexNames);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
line += _this.buildForeignKeyManyToMany(firstTableFieldsMap, refEndpointFieldName, newTableName, refEndpointTable.name, refEndpointSchema, model);
|
|
246
|
-
line += _this.buildForeignKeyManyToMany(secondTableFieldsMap, foreignEndpointFieldName, newTableName, foreignEndpointTable.name, foreignEndpointSchema, model);
|
|
216
|
+
line += _this.buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, newTableName, refEndpointSchema, model);
|
|
217
|
+
line += _this.buildForeignKeyManyToMany(firstTableFieldsMap, refEndpointFieldName, newTableName, refEndpointTable.name, refEndpointSchema, refEndpointSchema, model);
|
|
218
|
+
line += _this.buildForeignKeyManyToMany(secondTableFieldsMap, foreignEndpointFieldName, newTableName, foreignEndpointTable.name, refEndpointSchema, foreignEndpointSchema, model);
|
|
247
219
|
} else {
|
|
248
220
|
line = "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(foreignEndpointSchema, model) ? "`".concat(foreignEndpointSchema.name, "`.") : '', "`").concat(foreignEndpointTable.name, "` ADD ");
|
|
249
221
|
|
|
@@ -333,9 +305,6 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
333
305
|
var usedTableNames = new Set(Object.values(model.tables).map(function (table) {
|
|
334
306
|
return table.name;
|
|
335
307
|
}));
|
|
336
|
-
var usedIndexNames = new Set(Object.values(model.indexes).map(function (index) {
|
|
337
|
-
return index.name;
|
|
338
|
-
}));
|
|
339
308
|
var statements = database.schemaIds.reduce(function (prevStatements, schemaId) {
|
|
340
309
|
var schema = model.schemas[schemaId];
|
|
341
310
|
var tableIds = schema.tableIds,
|
|
@@ -378,7 +347,7 @@ var MySQLExporter = /*#__PURE__*/function () {
|
|
|
378
347
|
if (!_lodash["default"].isEmpty(refIds)) {
|
|
379
348
|
var _prevStatements$refs;
|
|
380
349
|
|
|
381
|
-
(_prevStatements$refs = prevStatements.refs).push.apply(_prevStatements$refs, _toConsumableArray(MySQLExporter.exportRefs(refIds, model, usedTableNames
|
|
350
|
+
(_prevStatements$refs = prevStatements.refs).push.apply(_prevStatements$refs, _toConsumableArray(MySQLExporter.exportRefs(refIds, model, usedTableNames)));
|
|
382
351
|
}
|
|
383
352
|
|
|
384
353
|
return prevStatements;
|
|
@@ -63,7 +63,8 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
63
63
|
var line = '';
|
|
64
64
|
|
|
65
65
|
if (field.increment) {
|
|
66
|
-
var typeSerial =
|
|
66
|
+
var typeSerial = 'SERIAL';
|
|
67
|
+
if (field.type.type_name.toLowerCase() === 'bigint') typeSerial = 'BIGSERIAL';else if (field.type.type_name.toLowerCase() === 'smallserial') typeSerial = 'SMALLSERIAL';
|
|
67
68
|
line = "\"".concat(field.name, "\" ").concat(typeSerial);
|
|
68
69
|
} else {
|
|
69
70
|
var schemaName = '';
|
|
@@ -169,18 +170,18 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
169
170
|
}
|
|
170
171
|
}, {
|
|
171
172
|
key: "buildTableManyToMany",
|
|
172
|
-
value: function buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, tableName) {
|
|
173
|
-
var line = "CREATE TABLE \"".concat(tableName, "\" (\n");
|
|
173
|
+
value: function buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, tableName, refEndpointSchema, model) {
|
|
174
|
+
var line = "CREATE TABLE ".concat((0, _utils.shouldPrintSchema)(refEndpointSchema, model) ? "\"".concat(refEndpointSchema.name, "\".") : '', "\"").concat(tableName, "\" (\n");
|
|
174
175
|
|
|
175
176
|
var key1s = _toConsumableArray(firstTableFieldsMap.keys()).join('", "');
|
|
176
177
|
|
|
177
178
|
var key2s = _toConsumableArray(secondTableFieldsMap.keys()).join('", "');
|
|
178
179
|
|
|
179
180
|
firstTableFieldsMap.forEach(function (fieldType, fieldName) {
|
|
180
|
-
line += " \"".concat(fieldName, "\" ").concat(fieldType, "
|
|
181
|
+
line += " \"".concat(fieldName, "\" ").concat(fieldType, ",\n");
|
|
181
182
|
});
|
|
182
183
|
secondTableFieldsMap.forEach(function (fieldType, fieldName) {
|
|
183
|
-
line += " \"".concat(fieldName, "\" ").concat(fieldType, "
|
|
184
|
+
line += " \"".concat(fieldName, "\" ").concat(fieldType, ",\n");
|
|
184
185
|
});
|
|
185
186
|
line += " PRIMARY KEY (\"".concat(key1s, "\", \"").concat(key2s, "\")\n");
|
|
186
187
|
line += ');\n\n';
|
|
@@ -188,34 +189,15 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
188
189
|
}
|
|
189
190
|
}, {
|
|
190
191
|
key: "buildForeignKeyManyToMany",
|
|
191
|
-
value: function buildForeignKeyManyToMany(fieldsMap, foreignEndpointFields, refEndpointTableName, foreignEndpointTableName,
|
|
192
|
+
value: function buildForeignKeyManyToMany(fieldsMap, foreignEndpointFields, refEndpointTableName, foreignEndpointTableName, refEndpointSchema, foreignEndpointSchema, model) {
|
|
192
193
|
var refEndpointFields = _toConsumableArray(fieldsMap.keys()).join('", "');
|
|
193
194
|
|
|
194
|
-
var line = "ALTER TABLE \"".concat(refEndpointTableName, "\" ADD FOREIGN KEY (\"").concat(refEndpointFields, "\") REFERENCES ").concat((0, _utils.shouldPrintSchema)(
|
|
195
|
-
return line;
|
|
196
|
-
}
|
|
197
|
-
}, {
|
|
198
|
-
key: "buildIndexManytoMany",
|
|
199
|
-
value: function buildIndexManytoMany(fieldsMap, newTableName, tableRefName, usedIndexNames) {
|
|
200
|
-
var newIndexName = "".concat(newTableName, "_").concat(tableRefName);
|
|
201
|
-
var count = 1;
|
|
202
|
-
|
|
203
|
-
while (usedIndexNames.has(newIndexName)) {
|
|
204
|
-
newIndexName = "".concat(newTableName, "_").concat(tableRefName, "(").concat(count, ")");
|
|
205
|
-
count += 1;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
usedIndexNames.add(newIndexName);
|
|
209
|
-
|
|
210
|
-
var indexFields = _toConsumableArray(fieldsMap.keys()).join('", "');
|
|
211
|
-
|
|
212
|
-
var line = "CREATE INDEX \"idx_".concat(newIndexName, "\" ON \"").concat(newTableName, "\" (");
|
|
213
|
-
line += "\"".concat(indexFields, "\");\n\n");
|
|
195
|
+
var line = "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(refEndpointSchema, model) ? "\"".concat(refEndpointSchema.name, "\".") : '', "\"").concat(refEndpointTableName, "\" ADD FOREIGN KEY (\"").concat(refEndpointFields, "\") REFERENCES ").concat((0, _utils.shouldPrintSchema)(foreignEndpointSchema, model) ? "\"".concat(foreignEndpointSchema.name, "\".") : '', "\"").concat(foreignEndpointTableName, "\" ").concat(foreignEndpointFields, ";\n\n");
|
|
214
196
|
return line;
|
|
215
197
|
}
|
|
216
198
|
}, {
|
|
217
199
|
key: "exportRefs",
|
|
218
|
-
value: function exportRefs(refIds, model, usedTableNames
|
|
200
|
+
value: function exportRefs(refIds, model, usedTableNames) {
|
|
219
201
|
var _this = this;
|
|
220
202
|
|
|
221
203
|
var strArr = refIds.map(function (refId) {
|
|
@@ -246,18 +228,9 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
246
228
|
var firstTableFieldsMap = (0, _utils.buildJunctionFields1)(refEndpoint.fieldIds, model);
|
|
247
229
|
var secondTableFieldsMap = (0, _utils.buildJunctionFields2)(foreignEndpoint.fieldIds, model, firstTableFieldsMap);
|
|
248
230
|
var newTableName = (0, _utils.buildNewTableName)(refEndpointTable.name, foreignEndpointTable.name, usedTableNames);
|
|
249
|
-
line += _this.buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, newTableName);
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
line += _this.buildIndexManytoMany(firstTableFieldsMap, newTableName, refEndpointTable.name, usedIndexNames);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (secondTableFieldsMap.size > 1) {
|
|
256
|
-
line += _this.buildIndexManytoMany(secondTableFieldsMap, newTableName, foreignEndpointTable.name, usedIndexNames);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
line += _this.buildForeignKeyManyToMany(firstTableFieldsMap, refEndpointFieldName, newTableName, refEndpointTable.name, refEndpointSchema, model);
|
|
260
|
-
line += _this.buildForeignKeyManyToMany(secondTableFieldsMap, foreignEndpointFieldName, newTableName, foreignEndpointTable.name, foreignEndpointSchema, model);
|
|
231
|
+
line += _this.buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, newTableName, refEndpointSchema, model);
|
|
232
|
+
line += _this.buildForeignKeyManyToMany(firstTableFieldsMap, refEndpointFieldName, newTableName, refEndpointTable.name, refEndpointSchema, refEndpointSchema, model);
|
|
233
|
+
line += _this.buildForeignKeyManyToMany(secondTableFieldsMap, foreignEndpointFieldName, newTableName, foreignEndpointTable.name, refEndpointSchema, foreignEndpointSchema, model);
|
|
261
234
|
} else {
|
|
262
235
|
line = "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(foreignEndpointSchema, model) ? "\"".concat(foreignEndpointSchema.name, "\".") : '', "\"").concat(foreignEndpointTable.name, "\" ADD ");
|
|
263
236
|
|
|
@@ -368,9 +341,6 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
368
341
|
var usedTableNames = new Set(Object.values(model.tables).map(function (table) {
|
|
369
342
|
return table.name;
|
|
370
343
|
}));
|
|
371
|
-
var usedIndexNames = new Set(Object.values(model.indexes).map(function (index) {
|
|
372
|
-
return index.name;
|
|
373
|
-
}));
|
|
374
344
|
var statements = database.schemaIds.reduce(function (prevStatements, schemaId) {
|
|
375
345
|
var schema = model.schemas[schemaId];
|
|
376
346
|
var tableIds = schema.tableIds,
|
|
@@ -431,7 +401,7 @@ var PostgresExporter = /*#__PURE__*/function () {
|
|
|
431
401
|
if (!_lodash["default"].isEmpty(refIds)) {
|
|
432
402
|
var _prevStatements$refs;
|
|
433
403
|
|
|
434
|
-
(_prevStatements$refs = prevStatements.refs).push.apply(_prevStatements$refs, _toConsumableArray(PostgresExporter.exportRefs(refIds, model, usedTableNames
|
|
404
|
+
(_prevStatements$refs = prevStatements.refs).push.apply(_prevStatements$refs, _toConsumableArray(PostgresExporter.exportRefs(refIds, model, usedTableNames)));
|
|
435
405
|
}
|
|
436
406
|
|
|
437
407
|
return prevStatements;
|
|
@@ -145,18 +145,18 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
145
145
|
}
|
|
146
146
|
}, {
|
|
147
147
|
key: "buildTableManyToMany",
|
|
148
|
-
value: function buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, tableName) {
|
|
149
|
-
var line = "CREATE TABLE [".concat(tableName, "] (\n");
|
|
148
|
+
value: function buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, tableName, refEndpointSchema, model) {
|
|
149
|
+
var line = "CREATE TABLE ".concat((0, _utils.shouldPrintSchema)(refEndpointSchema, model) ? "[".concat(refEndpointSchema.name, "].") : '', "[").concat(tableName, "] (\n");
|
|
150
150
|
|
|
151
151
|
var key1s = _toConsumableArray(firstTableFieldsMap.keys()).join('], [');
|
|
152
152
|
|
|
153
153
|
var key2s = _toConsumableArray(secondTableFieldsMap.keys()).join('], [');
|
|
154
154
|
|
|
155
155
|
firstTableFieldsMap.forEach(function (fieldType, fieldName) {
|
|
156
|
-
line += " [".concat(fieldName, "] ").concat(fieldType, "
|
|
156
|
+
line += " [".concat(fieldName, "] ").concat(fieldType, ",\n");
|
|
157
157
|
});
|
|
158
158
|
secondTableFieldsMap.forEach(function (fieldType, fieldName) {
|
|
159
|
-
line += " [".concat(fieldName, "] ").concat(fieldType, "
|
|
159
|
+
line += " [".concat(fieldName, "] ").concat(fieldType, ",\n");
|
|
160
160
|
});
|
|
161
161
|
line += " PRIMARY KEY ([".concat(key1s, "], [").concat(key2s, "])\n");
|
|
162
162
|
line += ');\nGO\n\n';
|
|
@@ -164,29 +164,10 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
164
164
|
}
|
|
165
165
|
}, {
|
|
166
166
|
key: "buildForeignKeyManyToMany",
|
|
167
|
-
value: function buildForeignKeyManyToMany(fieldsMap, foreignEndpointFields, refEndpointTableName, foreignEndpointTableName,
|
|
167
|
+
value: function buildForeignKeyManyToMany(fieldsMap, foreignEndpointFields, refEndpointTableName, foreignEndpointTableName, refEndpointSchema, foreignEndpointSchema, model) {
|
|
168
168
|
var refEndpointFields = _toConsumableArray(fieldsMap.keys()).join('], [');
|
|
169
169
|
|
|
170
|
-
var line = "ALTER TABLE [".concat(refEndpointTableName, "] ADD FOREIGN KEY ([").concat(refEndpointFields, "]) REFERENCES ").concat((0, _utils.shouldPrintSchema)(
|
|
171
|
-
return line;
|
|
172
|
-
}
|
|
173
|
-
}, {
|
|
174
|
-
key: "buildIndexManytoMany",
|
|
175
|
-
value: function buildIndexManytoMany(fieldsMap, newTableName, tableRefName, usedIndexNames) {
|
|
176
|
-
var newIndexName = "".concat(newTableName, "_").concat(tableRefName);
|
|
177
|
-
var count = 1;
|
|
178
|
-
|
|
179
|
-
while (usedIndexNames.has(newIndexName)) {
|
|
180
|
-
newIndexName = "".concat(newTableName, "_").concat(tableRefName, "(").concat(count, ")");
|
|
181
|
-
count += 1;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
usedIndexNames.add(newIndexName);
|
|
185
|
-
|
|
186
|
-
var indexFields = _toConsumableArray(fieldsMap.keys()).join('", "');
|
|
187
|
-
|
|
188
|
-
var line = "CREATE INDEX [idx_".concat(newIndexName, "] ON [").concat(newTableName, "] (");
|
|
189
|
-
line += "\"".concat(indexFields, "\");\nGO\n\n");
|
|
170
|
+
var line = "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(refEndpointSchema, model) ? "[".concat(refEndpointSchema.name, "].") : '', "[").concat(refEndpointTableName, "] ADD FOREIGN KEY ([").concat(refEndpointFields, "]) REFERENCES ").concat((0, _utils.shouldPrintSchema)(foreignEndpointSchema, model) ? "[".concat(foreignEndpointSchema.name, "].") : '', "[").concat(foreignEndpointTableName, "] ").concat(foreignEndpointFields, ";\nGO\n\n");
|
|
190
171
|
return line;
|
|
191
172
|
}
|
|
192
173
|
}, {
|
|
@@ -199,7 +180,7 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
199
180
|
}
|
|
200
181
|
}, {
|
|
201
182
|
key: "exportRefs",
|
|
202
|
-
value: function exportRefs(refIds, model, usedTableNames
|
|
183
|
+
value: function exportRefs(refIds, model, usedTableNames) {
|
|
203
184
|
var _this = this;
|
|
204
185
|
|
|
205
186
|
var strArr = refIds.map(function (refId) {
|
|
@@ -230,18 +211,9 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
230
211
|
var firstTableFieldsMap = (0, _utils.buildJunctionFields1)(refEndpoint.fieldIds, model);
|
|
231
212
|
var secondTableFieldsMap = (0, _utils.buildJunctionFields2)(foreignEndpoint.fieldIds, model, firstTableFieldsMap);
|
|
232
213
|
var newTableName = (0, _utils.buildNewTableName)(refEndpointTable.name, foreignEndpointTable.name, usedTableNames);
|
|
233
|
-
line += _this.buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, newTableName);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
line += _this.buildIndexManytoMany(firstTableFieldsMap, newTableName, refEndpointTable.name, usedIndexNames);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if (secondTableFieldsMap.size > 1) {
|
|
240
|
-
line += _this.buildIndexManytoMany(secondTableFieldsMap, newTableName, foreignEndpointTable.name, usedIndexNames);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
line += _this.buildForeignKeyManyToMany(firstTableFieldsMap, refEndpointFieldName, newTableName, refEndpointTable.name, refEndpointSchema, model);
|
|
244
|
-
line += _this.buildForeignKeyManyToMany(secondTableFieldsMap, foreignEndpointFieldName, newTableName, foreignEndpointTable.name, foreignEndpointSchema, model);
|
|
214
|
+
line += _this.buildTableManyToMany(firstTableFieldsMap, secondTableFieldsMap, newTableName, refEndpointSchema, model);
|
|
215
|
+
line += _this.buildForeignKeyManyToMany(firstTableFieldsMap, refEndpointFieldName, newTableName, refEndpointTable.name, refEndpointSchema, refEndpointSchema, model);
|
|
216
|
+
line += _this.buildForeignKeyManyToMany(secondTableFieldsMap, foreignEndpointFieldName, newTableName, foreignEndpointTable.name, refEndpointSchema, foreignEndpointSchema, model);
|
|
245
217
|
} else {
|
|
246
218
|
line = "ALTER TABLE ".concat((0, _utils.shouldPrintSchema)(foreignEndpointSchema, model) ? "[".concat(foreignEndpointSchema.name, "].") : '', "[").concat(foreignEndpointTable.name, "] ADD ");
|
|
247
219
|
|
|
@@ -349,9 +321,6 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
349
321
|
var usedTableNames = new Set(Object.values(model.tables).map(function (table) {
|
|
350
322
|
return table.name;
|
|
351
323
|
}));
|
|
352
|
-
var usedIndexNames = new Set(Object.values(model.indexes).map(function (index) {
|
|
353
|
-
return index.name;
|
|
354
|
-
}));
|
|
355
324
|
var statements = database.schemaIds.reduce(function (prevStatements, schemaId) {
|
|
356
325
|
var schema = model.schemas[schemaId];
|
|
357
326
|
var tableIds = schema.tableIds,
|
|
@@ -405,7 +374,7 @@ var SqlServerExporter = /*#__PURE__*/function () {
|
|
|
405
374
|
if (!_lodash["default"].isEmpty(refIds)) {
|
|
406
375
|
var _prevStatements$refs;
|
|
407
376
|
|
|
408
|
-
(_prevStatements$refs = prevStatements.refs).push.apply(_prevStatements$refs, _toConsumableArray(SqlServerExporter.exportRefs(refIds, model, usedTableNames
|
|
377
|
+
(_prevStatements$refs = prevStatements.refs).push.apply(_prevStatements$refs, _toConsumableArray(SqlServerExporter.exportRefs(refIds, model, usedTableNames)));
|
|
409
378
|
}
|
|
410
379
|
|
|
411
380
|
return prevStatements;
|
|
@@ -15,6 +15,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
15
15
|
|
|
16
16
|
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); }
|
|
17
17
|
|
|
18
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
19
|
+
|
|
20
|
+
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."); }
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
25
|
+
|
|
26
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
27
|
+
|
|
28
|
+
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; }
|
|
29
|
+
|
|
18
30
|
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; }
|
|
19
31
|
|
|
20
32
|
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; }
|
|
@@ -140,11 +152,35 @@ var Endpoint = /*#__PURE__*/function (_Element) {
|
|
|
140
152
|
value: function setFields(fieldNames, table) {
|
|
141
153
|
var _this2 = this;
|
|
142
154
|
|
|
143
|
-
fieldNames.
|
|
155
|
+
var newFieldNames = fieldNames && fieldNames.length ? _toConsumableArray(fieldNames) : [];
|
|
156
|
+
|
|
157
|
+
if (!newFieldNames.length) {
|
|
158
|
+
var fieldHasPK = table.fields.find(function (field) {
|
|
159
|
+
return field.pk;
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (fieldHasPK) {
|
|
163
|
+
newFieldNames.push(fieldHasPK.name);
|
|
164
|
+
} else {
|
|
165
|
+
var indexHasPK = table.indexes.find(function (index) {
|
|
166
|
+
return index.pk;
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
if (indexHasPK) {
|
|
170
|
+
newFieldNames = indexHasPK.columns.map(function (column) {
|
|
171
|
+
return column.value;
|
|
172
|
+
});
|
|
173
|
+
} else {
|
|
174
|
+
this.error("Can't find primary or composite key in table ".concat((0, _utils.shouldPrintSchema)(table.schema) ? "\"".concat(table.schema.name, "\".") : '', "\"").concat(table.name, "\""));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
newFieldNames.forEach(function (fieldName) {
|
|
144
180
|
var field = table.findField(fieldName);
|
|
145
181
|
|
|
146
182
|
if (!field) {
|
|
147
|
-
_this2.error("Can't find field ".concat((0, _utils.shouldPrintSchema)(table.schema) ? "\"".concat(table.schema.name, "\".") : '', "\"").concat(fieldName, "\" in table \"").concat(
|
|
183
|
+
_this2.error("Can't find field ".concat((0, _utils.shouldPrintSchema)(table.schema) ? "\"".concat(table.schema.name, "\".") : '', "\"").concat(fieldName, "\" in table \"").concat(table.name, "\""));
|
|
148
184
|
}
|
|
149
185
|
|
|
150
186
|
_this2.fields.push(field);
|
|
@@ -51,12 +51,14 @@ function makeTableConstraintFK(_keyword1, endpoint1, _keyword2, tableName, endpo
|
|
|
51
51
|
var fullTableName = getFullTableName(tableName);
|
|
52
52
|
|
|
53
53
|
if (!endpoint2) {
|
|
54
|
+
// Omits columns list, see: https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver16#foreign-key-constraints
|
|
54
55
|
// eslint-disable-next-line no-param-reassign
|
|
55
56
|
endpoint2 = {
|
|
56
57
|
type: 'endpoint',
|
|
57
|
-
value: {
|
|
58
|
+
value: {
|
|
59
|
+
fieldNames: null
|
|
60
|
+
}
|
|
58
61
|
};
|
|
59
|
-
endpoint2.value.fieldNames = endpoint1.value.fieldNames;
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
endpoint1.value.relation = '*';
|