typeorm 0.2.42-dev.93bf96e → 0.2.42-dev.9e844d9
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/browser/connection/BaseConnectionOptions.js.map +1 -1
- package/browser/connection/Connection.js +33 -24
- package/browser/connection/Connection.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.js +3 -1
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +14 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +87 -4
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +10 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +64 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +8 -0
- package/browser/driver/capacitor/CapacitorQueryRunner.js +30 -0
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.d.ts +8 -0
- package/browser/driver/cordova/CordovaQueryRunner.js +30 -0
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.d.ts +8 -0
- package/browser/driver/expo/ExpoQueryRunner.js +30 -0
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +8 -0
- package/browser/driver/mongodb/MongoQueryRunner.js +20 -0
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +8 -0
- package/browser/driver/nativescript/NativescriptQueryRunner.js +30 -0
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +8 -0
- package/browser/driver/react-native/ReactNativeQueryRunner.js +30 -0
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.d.ts +13 -0
- package/browser/driver/sqlite/SqliteDriver.js +84 -1
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.d.ts +8 -0
- package/browser/driver/sqlite/SqliteQueryRunner.js +30 -0
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +13 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +25 -2
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +11 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +116 -55
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.d.ts +8 -0
- package/browser/driver/sqljs/SqljsQueryRunner.js +30 -0
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +37 -25
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +2 -0
- package/browser/persistence/SubjectExecutor.js +99 -7
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +9 -0
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +9 -9
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -50
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +8 -0
- package/browser/query-runner/BaseQueryRunner.js +20 -0
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +8 -0
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +36 -30
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/subscriber/Broadcaster.js +35 -31
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/util/PathUtils.d.ts +10 -0
- package/browser/util/PathUtils.js +28 -0
- package/browser/util/PathUtils.js.map +1 -0
- package/connection/BaseConnectionOptions.js.map +1 -1
- package/connection/Connection.js +33 -24
- package/connection/Connection.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +3 -1
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +14 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js +86 -3
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +10 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +63 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/capacitor/CapacitorQueryRunner.d.ts +8 -0
- package/driver/capacitor/CapacitorQueryRunner.js +30 -0
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.d.ts +8 -0
- package/driver/cordova/CordovaQueryRunner.js +30 -0
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.d.ts +8 -0
- package/driver/expo/ExpoQueryRunner.js +30 -0
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +8 -0
- package/driver/mongodb/MongoQueryRunner.js +20 -0
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.d.ts +8 -0
- package/driver/nativescript/NativescriptQueryRunner.js +30 -0
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.d.ts +8 -0
- package/driver/react-native/ReactNativeQueryRunner.js +30 -0
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteDriver.d.ts +13 -0
- package/driver/sqlite/SqliteDriver.js +83 -0
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.d.ts +8 -0
- package/driver/sqlite/SqliteQueryRunner.js +30 -0
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +13 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +25 -2
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +11 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +116 -55
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.d.ts +8 -0
- package/driver/sqljs/SqljsQueryRunner.js +30 -0
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +1 -1
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/migration/MigrationExecutor.js +37 -25
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectExecutor.d.ts +2 -0
- package/persistence/SubjectExecutor.js +99 -7
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +9 -0
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.js +9 -9
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -50
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +8 -0
- package/query-runner/BaseQueryRunner.js +20 -0
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +8 -0
- package/query-runner/QueryRunner.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js +36 -30
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/subscriber/Broadcaster.js +35 -31
- package/subscriber/Broadcaster.js.map +1 -1
- package/util/PathUtils.d.ts +10 -0
- package/util/PathUtils.js +34 -0
- package/util/PathUtils.js.map +1 -0
|
@@ -233,7 +233,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
233
233
|
switch (_a.label) {
|
|
234
234
|
case 0:
|
|
235
235
|
tableName = tableOrName instanceof Table_1.Table ? tableOrName.name : tableOrName;
|
|
236
|
-
sql = "PRAGMA table_info(
|
|
236
|
+
sql = "PRAGMA table_info(" + this.escapePath(tableName) + ")";
|
|
237
237
|
return [4 /*yield*/, this.query(sql)];
|
|
238
238
|
case 1:
|
|
239
239
|
columns = _a.sent();
|
|
@@ -443,8 +443,8 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
443
443
|
oldTable = _a;
|
|
444
444
|
newTable = oldTable.clone();
|
|
445
445
|
newTable.name = newTableName;
|
|
446
|
-
up = new Query_1.Query("ALTER TABLE
|
|
447
|
-
down = new Query_1.Query("ALTER TABLE
|
|
446
|
+
up = new Query_1.Query("ALTER TABLE " + this.escapePath(oldTable.name) + " RENAME TO " + this.escapePath(newTableName));
|
|
447
|
+
down = new Query_1.Query("ALTER TABLE " + this.escapePath(newTableName) + " RENAME TO " + this.escapePath(oldTable.name));
|
|
448
448
|
return [4 /*yield*/, this.executeQueries(up, down)];
|
|
449
449
|
case 4:
|
|
450
450
|
_b.sent();
|
|
@@ -1237,7 +1237,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1237
1237
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1238
1238
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
1239
1239
|
switch (_a.label) {
|
|
1240
|
-
case 0: return [4 /*yield*/, this.query("DELETE FROM
|
|
1240
|
+
case 0: return [4 /*yield*/, this.query("DELETE FROM " + this.escapePath(tableName))];
|
|
1241
1241
|
case 1:
|
|
1242
1242
|
_a.sent();
|
|
1243
1243
|
return [2 /*return*/];
|
|
@@ -1248,13 +1248,18 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1248
1248
|
/**
|
|
1249
1249
|
* Removes all tables from the currently connected database.
|
|
1250
1250
|
*/
|
|
1251
|
-
AbstractSqliteQueryRunner.prototype.clearDatabase = function () {
|
|
1251
|
+
AbstractSqliteQueryRunner.prototype.clearDatabase = function (database) {
|
|
1252
1252
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1253
|
-
var selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_2, rollbackError_1;
|
|
1253
|
+
var dbPath, selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_2, rollbackError_1;
|
|
1254
1254
|
var _this = this;
|
|
1255
1255
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
1256
1256
|
switch (_a.label) {
|
|
1257
|
-
case 0:
|
|
1257
|
+
case 0:
|
|
1258
|
+
dbPath = undefined;
|
|
1259
|
+
if (database && this.driver.getAttachedDatabaseHandleByRelativePath(database)) {
|
|
1260
|
+
dbPath = this.driver.getAttachedDatabaseHandleByRelativePath(database);
|
|
1261
|
+
}
|
|
1262
|
+
return [4 /*yield*/, this.query("PRAGMA foreign_keys = OFF;")];
|
|
1258
1263
|
case 1:
|
|
1259
1264
|
_a.sent();
|
|
1260
1265
|
return [4 /*yield*/, this.startTransaction()];
|
|
@@ -1263,14 +1268,14 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1263
1268
|
_a.label = 3;
|
|
1264
1269
|
case 3:
|
|
1265
1270
|
_a.trys.push([3, 9, 14, 16]);
|
|
1266
|
-
selectViewDropsQuery = "SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'";
|
|
1271
|
+
selectViewDropsQuery = dbPath ? "SELECT 'DROP VIEW \"" + dbPath + "\".\"' || name || '\";' as query FROM \"" + dbPath + "\".\"sqlite_master\" WHERE \"type\" = 'view'" : "SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'";
|
|
1267
1272
|
return [4 /*yield*/, this.query(selectViewDropsQuery)];
|
|
1268
1273
|
case 4:
|
|
1269
1274
|
dropViewQueries = _a.sent();
|
|
1270
1275
|
return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q["query"]); }))];
|
|
1271
1276
|
case 5:
|
|
1272
1277
|
_a.sent();
|
|
1273
|
-
selectTableDropsQuery = "SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'";
|
|
1278
|
+
selectTableDropsQuery = dbPath ? "SELECT 'DROP TABLE \"" + dbPath + "\".\"' || name || '\";' as query FROM \"" + dbPath + "\".\"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'" : "SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'";
|
|
1274
1279
|
return [4 /*yield*/, this.query(selectTableDropsQuery)];
|
|
1275
1280
|
case 6:
|
|
1276
1281
|
dropTableQueries = _a.sent();
|
|
@@ -1337,66 +1342,97 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1337
1342
|
});
|
|
1338
1343
|
});
|
|
1339
1344
|
};
|
|
1345
|
+
AbstractSqliteQueryRunner.prototype.loadTableRecords = function (tablePath, tableOrIndex) {
|
|
1346
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1347
|
+
var database, _a, schema, tableName, res;
|
|
1348
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1349
|
+
switch (_b.label) {
|
|
1350
|
+
case 0:
|
|
1351
|
+
database = undefined;
|
|
1352
|
+
_a = (0, tslib_1.__read)(this.splitTablePath(tablePath), 2), schema = _a[0], tableName = _a[1];
|
|
1353
|
+
if (schema && this.driver.getAttachedDatabasePathRelativeByHandle(schema)) {
|
|
1354
|
+
database = this.driver.getAttachedDatabasePathRelativeByHandle(schema);
|
|
1355
|
+
}
|
|
1356
|
+
return [4 /*yield*/, this.query("SELECT " + (database ? "'" + database + "'" : null) + " as database, " + (schema ? "'" + schema + "'" : null) + " as schema, * FROM " + (schema ? "\"" + schema + "\"." : "") + this.escapePath("sqlite_master") + " WHERE \"type\" = '" + tableOrIndex + "' AND \"" + (tableOrIndex === "table" ? "name" : "tbl_name") + "\" IN ('" + tableName + "')")];
|
|
1357
|
+
case 1:
|
|
1358
|
+
res = _b.sent();
|
|
1359
|
+
return [2 /*return*/, res];
|
|
1360
|
+
}
|
|
1361
|
+
});
|
|
1362
|
+
});
|
|
1363
|
+
};
|
|
1364
|
+
AbstractSqliteQueryRunner.prototype.loadPragmaRecords = function (tablePath, pragma) {
|
|
1365
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1366
|
+
var _a, tableName, res;
|
|
1367
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1368
|
+
switch (_b.label) {
|
|
1369
|
+
case 0:
|
|
1370
|
+
_a = (0, tslib_1.__read)(this.splitTablePath(tablePath), 2), tableName = _a[1];
|
|
1371
|
+
return [4 /*yield*/, this.query("PRAGMA " + pragma + "(\"" + tableName + "\")")];
|
|
1372
|
+
case 1:
|
|
1373
|
+
res = _b.sent();
|
|
1374
|
+
return [2 /*return*/, res];
|
|
1375
|
+
}
|
|
1376
|
+
});
|
|
1377
|
+
});
|
|
1378
|
+
};
|
|
1340
1379
|
/**
|
|
1341
1380
|
* Loads all tables (with given names) from the database and creates a Table from them.
|
|
1342
1381
|
*/
|
|
1343
1382
|
AbstractSqliteQueryRunner.prototype.loadTables = function (tableNames) {
|
|
1344
1383
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1345
|
-
var dbTables, tablesSql, _a, _b, _c, _d,
|
|
1384
|
+
var dbTables, dbIndicesDef, tablesSql, _a, _b, _c, _d, tableNamesString;
|
|
1346
1385
|
var _this = this;
|
|
1347
|
-
return (0, tslib_1.__generator)(this, function (
|
|
1348
|
-
switch (
|
|
1386
|
+
return (0, tslib_1.__generator)(this, function (_e) {
|
|
1387
|
+
switch (_e.label) {
|
|
1349
1388
|
case 0:
|
|
1350
1389
|
// if no tables given then no need to proceed
|
|
1351
1390
|
if (tableNames && tableNames.length === 0) {
|
|
1352
1391
|
return [2 /*return*/, []];
|
|
1353
1392
|
}
|
|
1354
1393
|
dbTables = [];
|
|
1355
|
-
if (!!tableNames) return [3 /*break*/,
|
|
1394
|
+
if (!!tableNames) return [3 /*break*/, 3];
|
|
1356
1395
|
tablesSql = "SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table'";
|
|
1357
1396
|
_b = (_a = dbTables.push).apply;
|
|
1358
1397
|
_c = [dbTables];
|
|
1359
1398
|
_d = [[]];
|
|
1360
1399
|
return [4 /*yield*/, this.query(tablesSql)];
|
|
1361
1400
|
case 1:
|
|
1362
|
-
_b.apply(_a, _c.concat([tslib_1.__spreadArray.apply(void 0, _d.concat([tslib_1.__read.apply(void 0, [
|
|
1363
|
-
return [3 /*break*/, 4];
|
|
1364
|
-
case 2:
|
|
1365
|
-
tableNamesString_1 = tableNames.map(function (tableName) { return "'" + tableName + "'"; }).join(", ");
|
|
1366
|
-
tablesSql = "SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" IN (" + tableNamesString_1 + ")";
|
|
1367
|
-
_f = (_e = dbTables.push).apply;
|
|
1368
|
-
_g = [dbTables];
|
|
1369
|
-
_h = [[]];
|
|
1370
|
-
return [4 /*yield*/, this.query(tablesSql)];
|
|
1371
|
-
case 3:
|
|
1372
|
-
_f.apply(_e, _g.concat([tslib_1.__spreadArray.apply(void 0, _h.concat([tslib_1.__read.apply(void 0, [_j.sent()]), false]))]));
|
|
1373
|
-
_j.label = 4;
|
|
1374
|
-
case 4:
|
|
1375
|
-
// if tables were not found in the db, no need to proceed
|
|
1376
|
-
if (dbTables.length === 0) {
|
|
1377
|
-
return [2 /*return*/, []];
|
|
1378
|
-
}
|
|
1401
|
+
_b.apply(_a, _c.concat([tslib_1.__spreadArray.apply(void 0, _d.concat([tslib_1.__read.apply(void 0, [_e.sent()]), false]))]));
|
|
1379
1402
|
tableNamesString = dbTables.map(function (_a) {
|
|
1380
1403
|
var name = _a.name;
|
|
1381
1404
|
return "'" + name + "'";
|
|
1382
1405
|
}).join(", ");
|
|
1383
1406
|
return [4 /*yield*/, this.query("SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'index' AND \"tbl_name\" IN (" + tableNamesString + ")")];
|
|
1407
|
+
case 2:
|
|
1408
|
+
dbIndicesDef = _e.sent();
|
|
1409
|
+
return [3 /*break*/, 6];
|
|
1410
|
+
case 3: return [4 /*yield*/, Promise.all(tableNames.map(function (tableName) { return _this.loadTableRecords(tableName, "table"); }))];
|
|
1411
|
+
case 4:
|
|
1412
|
+
dbTables = (_e.sent()).reduce(function (acc, res) { return ((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(acc), false), (0, tslib_1.__read)(res), false)); }, []).filter(Boolean);
|
|
1413
|
+
return [4 /*yield*/, Promise.all((tableNames !== null && tableNames !== void 0 ? tableNames : []).map(function (tableName) { return _this.loadTableRecords(tableName, "index"); }))];
|
|
1384
1414
|
case 5:
|
|
1385
|
-
dbIndicesDef =
|
|
1415
|
+
dbIndicesDef = (_e.sent()).reduce(function (acc, res) { return ((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(acc), false), (0, tslib_1.__read)(res), false)); }, []).filter(Boolean);
|
|
1416
|
+
_e.label = 6;
|
|
1417
|
+
case 6:
|
|
1418
|
+
// if tables were not found in the db, no need to proceed
|
|
1419
|
+
if (dbTables.length === 0) {
|
|
1420
|
+
return [2 /*return*/, []];
|
|
1421
|
+
}
|
|
1386
1422
|
// create table schemas for loaded tables
|
|
1387
1423
|
return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
1388
|
-
var table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, uniqueRegexResult, uniqueMappings, uniqueRegex, tableUniquePromises, _b, result, regexp, indicesPromises, indices;
|
|
1424
|
+
var tablePath, table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, uniqueRegexResult, uniqueMappings, uniqueRegex, tableUniquePromises, _b, result, regexp, indicesPromises, indices;
|
|
1389
1425
|
var _this = this;
|
|
1390
1426
|
return (0, tslib_1.__generator)(this, function (_c) {
|
|
1391
1427
|
switch (_c.label) {
|
|
1392
1428
|
case 0:
|
|
1393
|
-
|
|
1394
|
-
table.name
|
|
1429
|
+
tablePath = dbTable['database'] && this.driver.getAttachedDatabaseHandleByRelativePath(dbTable['database']) ? this.driver.getAttachedDatabaseHandleByRelativePath(dbTable['database']) + "." + dbTable['name'] : dbTable['name'];
|
|
1430
|
+
table = new Table_1.Table({ name: tablePath });
|
|
1395
1431
|
sql = dbTable["sql"];
|
|
1396
1432
|
return [4 /*yield*/, Promise.all([
|
|
1397
|
-
this.
|
|
1398
|
-
this.
|
|
1399
|
-
this.
|
|
1433
|
+
this.loadPragmaRecords(tablePath, "table_info"),
|
|
1434
|
+
this.loadPragmaRecords(tablePath, "index_list"),
|
|
1435
|
+
this.loadPragmaRecords(tablePath, "foreign_key_list"),
|
|
1400
1436
|
])];
|
|
1401
1437
|
case 1:
|
|
1402
1438
|
_a = tslib_1.__read.apply(void 0, [_c.sent(), 3]), dbColumns = _a[0], dbIndices = _a[1], dbForeignKeys = _a[2];
|
|
@@ -1540,7 +1576,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1540
1576
|
.map(function (dbIndex) { return dbIndex["name"]; })
|
|
1541
1577
|
.filter(function (value, index, self) { return self.indexOf(value) === index; }) // unqiue
|
|
1542
1578
|
.map(function (dbIndexName) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
1543
|
-
var indexDef, condition, dbIndex, indexInfos, indexColumns, isUnique;
|
|
1579
|
+
var indexDef, condition, dbIndex, indexInfos, indexColumns, dbIndexPath, isUnique;
|
|
1544
1580
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
1545
1581
|
switch (_a.label) {
|
|
1546
1582
|
case 0:
|
|
@@ -1553,10 +1589,11 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1553
1589
|
indexColumns = indexInfos
|
|
1554
1590
|
.sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1["seqno"]) - parseInt(indexInfo2["seqno"]); })
|
|
1555
1591
|
.map(function (indexInfo) { return indexInfo["name"]; });
|
|
1592
|
+
dbIndexPath = "" + (dbTable["database"] ? dbTable["database"] + "." : '') + dbIndex["name"];
|
|
1556
1593
|
isUnique = dbIndex["unique"] === "1" || dbIndex["unique"] === 1;
|
|
1557
1594
|
return [2 /*return*/, new TableIndex_1.TableIndex({
|
|
1558
1595
|
table: table,
|
|
1559
|
-
name:
|
|
1596
|
+
name: dbIndexPath,
|
|
1560
1597
|
columnNames: indexColumns,
|
|
1561
1598
|
isUnique: isUnique,
|
|
1562
1599
|
where: condition ? condition[1] : undefined
|
|
@@ -1587,7 +1624,8 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1587
1624
|
if (skipPrimary && hasAutoIncrement)
|
|
1588
1625
|
throw new error_1.TypeORMError("Sqlite does not support AUTOINCREMENT on composite primary key");
|
|
1589
1626
|
var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(column, skipPrimary); }).join(", ");
|
|
1590
|
-
var
|
|
1627
|
+
var _a = (0, tslib_1.__read)(this.splitTablePath(table.name), 1), database = _a[0];
|
|
1628
|
+
var sql = "CREATE TABLE " + this.escapePath(table.name) + " (" + columnDefinitions;
|
|
1591
1629
|
// need for `addColumn()` method, because it recreates table.
|
|
1592
1630
|
table.columns
|
|
1593
1631
|
.filter(function (column) { return column.isUnique; })
|
|
@@ -1615,12 +1653,20 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1615
1653
|
sql += ", " + checksSql;
|
|
1616
1654
|
}
|
|
1617
1655
|
if (table.foreignKeys.length > 0 && createForeignKeys) {
|
|
1618
|
-
var foreignKeysSql = table.foreignKeys.
|
|
1656
|
+
var foreignKeysSql = table.foreignKeys.filter(function (fk) {
|
|
1657
|
+
var _a = (0, tslib_1.__read)(_this.splitTablePath(fk.referencedTableName), 1), referencedDatabase = _a[0];
|
|
1658
|
+
if (referencedDatabase !== database) {
|
|
1659
|
+
return false;
|
|
1660
|
+
}
|
|
1661
|
+
return true;
|
|
1662
|
+
})
|
|
1663
|
+
.map(function (fk) {
|
|
1664
|
+
var _a = (0, tslib_1.__read)(_this.splitTablePath(fk.referencedTableName), 2), referencedTable = _a[1];
|
|
1619
1665
|
var columnNames = fk.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", ");
|
|
1620
1666
|
if (!fk.name)
|
|
1621
1667
|
fk.name = _this.connection.namingStrategy.foreignKeyName(table, fk.columnNames, _this.getTablePath(fk), fk.referencedColumnNames);
|
|
1622
1668
|
var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", ");
|
|
1623
|
-
var constraint = "CONSTRAINT \"" + fk.name + "\" FOREIGN KEY (" + columnNames + ") REFERENCES \"" +
|
|
1669
|
+
var constraint = "CONSTRAINT \"" + fk.name + "\" FOREIGN KEY (" + columnNames + ") REFERENCES \"" + referencedTable + "\" (" + referencedColumnNames + ")";
|
|
1624
1670
|
if (fk.onDelete)
|
|
1625
1671
|
constraint += " ON DELETE " + fk.onDelete;
|
|
1626
1672
|
if (fk.onUpdate)
|
|
@@ -1645,7 +1691,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1645
1691
|
*/
|
|
1646
1692
|
AbstractSqliteQueryRunner.prototype.dropTableSql = function (tableOrName, ifExist) {
|
|
1647
1693
|
var tableName = tableOrName instanceof Table_1.Table ? tableOrName.name : tableOrName;
|
|
1648
|
-
var query = ifExist ? "DROP TABLE IF EXISTS
|
|
1694
|
+
var query = ifExist ? "DROP TABLE IF EXISTS " + this.escapePath(tableName) : "DROP TABLE " + this.escapePath(tableName);
|
|
1649
1695
|
return new Query_1.Query(query);
|
|
1650
1696
|
};
|
|
1651
1697
|
AbstractSqliteQueryRunner.prototype.createViewSql = function (view) {
|
|
@@ -1683,14 +1729,15 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1683
1729
|
*/
|
|
1684
1730
|
AbstractSqliteQueryRunner.prototype.createIndexSql = function (table, index) {
|
|
1685
1731
|
var columns = index.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", ");
|
|
1686
|
-
|
|
1732
|
+
var _a = (0, tslib_1.__read)(this.splitTablePath(table.name), 2), database = _a[0], tableName = _a[1];
|
|
1733
|
+
return new Query_1.Query("CREATE " + (index.isUnique ? "UNIQUE " : "") + "INDEX " + (database ? "\"" + database + "\"." : "") + this.escapePath(index.name) + " ON \"" + tableName + "\" (" + columns + ") " + (index.where ? "WHERE " + index.where : ""));
|
|
1687
1734
|
};
|
|
1688
1735
|
/**
|
|
1689
1736
|
* Builds drop index sql.
|
|
1690
1737
|
*/
|
|
1691
1738
|
AbstractSqliteQueryRunner.prototype.dropIndexSql = function (indexOrName) {
|
|
1692
1739
|
var indexName = indexOrName instanceof TableIndex_1.TableIndex ? indexOrName.name : indexOrName;
|
|
1693
|
-
return new Query_1.Query("DROP INDEX
|
|
1740
|
+
return new Query_1.Query("DROP INDEX " + this.escapePath(indexName));
|
|
1694
1741
|
};
|
|
1695
1742
|
/**
|
|
1696
1743
|
* Builds a query for create column.
|
|
@@ -1720,10 +1767,10 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1720
1767
|
AbstractSqliteQueryRunner.prototype.recreateTable = function (newTable, oldTable, migrateData) {
|
|
1721
1768
|
if (migrateData === void 0) { migrateData = true; }
|
|
1722
1769
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1723
|
-
var upQueries, downQueries, newColumnNames, oldColumnNames;
|
|
1770
|
+
var upQueries, downQueries, _a, databaseNew, tableNameNew, _b, tableNameOld, newColumnNames, oldColumnNames;
|
|
1724
1771
|
var _this = this;
|
|
1725
|
-
return (0, tslib_1.__generator)(this, function (
|
|
1726
|
-
switch (
|
|
1772
|
+
return (0, tslib_1.__generator)(this, function (_c) {
|
|
1773
|
+
switch (_c.label) {
|
|
1727
1774
|
case 0:
|
|
1728
1775
|
upQueries = [];
|
|
1729
1776
|
downQueries = [];
|
|
@@ -1732,8 +1779,9 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1732
1779
|
upQueries.push(_this.dropIndexSql(index));
|
|
1733
1780
|
downQueries.push(_this.createIndexSql(oldTable, index));
|
|
1734
1781
|
});
|
|
1735
|
-
|
|
1736
|
-
|
|
1782
|
+
_a = (0, tslib_1.__read)(this.splitTablePath(newTable.name), 2), databaseNew = _a[0], tableNameNew = _a[1];
|
|
1783
|
+
_b = (0, tslib_1.__read)(this.splitTablePath(oldTable.name), 2), tableNameOld = _b[1];
|
|
1784
|
+
newTable.name = tableNameNew = (databaseNew ? databaseNew + "." : "") + "temporary_" + tableNameNew;
|
|
1737
1785
|
// create new table
|
|
1738
1786
|
upQueries.push(this.createTableSql(newTable, true));
|
|
1739
1787
|
downQueries.push(this.dropTableSql(newTable));
|
|
@@ -1751,15 +1799,15 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1751
1799
|
return newTable.columns.find(function (c) { return c.name === column.name; });
|
|
1752
1800
|
}).map(function (column) { return "\"" + column.name + "\""; }).join(", ");
|
|
1753
1801
|
}
|
|
1754
|
-
upQueries.push(new Query_1.Query("INSERT INTO
|
|
1755
|
-
downQueries.push(new Query_1.Query("INSERT INTO
|
|
1802
|
+
upQueries.push(new Query_1.Query("INSERT INTO " + this.escapePath(newTable.name) + "(" + newColumnNames + ") SELECT " + oldColumnNames + " FROM " + this.escapePath(oldTable.name)));
|
|
1803
|
+
downQueries.push(new Query_1.Query("INSERT INTO " + this.escapePath(oldTable.name) + "(" + oldColumnNames + ") SELECT " + newColumnNames + " FROM " + this.escapePath(newTable.name)));
|
|
1756
1804
|
}
|
|
1757
1805
|
// drop old table
|
|
1758
1806
|
upQueries.push(this.dropTableSql(oldTable));
|
|
1759
1807
|
downQueries.push(this.createTableSql(oldTable, true));
|
|
1760
1808
|
// rename old table
|
|
1761
|
-
upQueries.push(new Query_1.Query("ALTER TABLE
|
|
1762
|
-
downQueries.push(new Query_1.Query("ALTER TABLE
|
|
1809
|
+
upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(newTable.name) + " RENAME TO " + this.escapePath(tableNameOld)));
|
|
1810
|
+
downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(oldTable.name) + " RENAME TO " + this.escapePath(tableNameNew)));
|
|
1763
1811
|
newTable.name = oldTable.name;
|
|
1764
1812
|
// recreate table indices
|
|
1765
1813
|
newTable.indices.forEach(function (index) {
|
|
@@ -1771,13 +1819,26 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
|
|
|
1771
1819
|
});
|
|
1772
1820
|
return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
1773
1821
|
case 1:
|
|
1774
|
-
|
|
1822
|
+
_c.sent();
|
|
1775
1823
|
this.replaceCachedTable(oldTable, newTable);
|
|
1776
1824
|
return [2 /*return*/];
|
|
1777
1825
|
}
|
|
1778
1826
|
});
|
|
1779
1827
|
});
|
|
1780
1828
|
};
|
|
1829
|
+
/**
|
|
1830
|
+
* tablePath e.g. "myDB.myTable", "myTable"
|
|
1831
|
+
*/
|
|
1832
|
+
AbstractSqliteQueryRunner.prototype.splitTablePath = function (tablePath) {
|
|
1833
|
+
return ((tablePath.indexOf(".") !== -1) ? tablePath.split(".") : [undefined, tablePath]);
|
|
1834
|
+
};
|
|
1835
|
+
/**
|
|
1836
|
+
* Escapes given table or view path. Tolerates leading/trailing dots
|
|
1837
|
+
*/
|
|
1838
|
+
AbstractSqliteQueryRunner.prototype.escapePath = function (target, disableEscape) {
|
|
1839
|
+
var tableName = target instanceof Table_1.Table || target instanceof View_1.View ? target.name : target;
|
|
1840
|
+
return tableName.replace(/^\.+|\.+$/g, "").split(".").map(function (i) { return disableEscape ? i : "\"" + i + "\""; }).join(".");
|
|
1841
|
+
};
|
|
1781
1842
|
return AbstractSqliteQueryRunner;
|
|
1782
1843
|
}(BaseQueryRunner_1.BaseQueryRunner));
|
|
1783
1844
|
exports.AbstractSqliteQueryRunner = AbstractSqliteQueryRunner;
|