typeorm 0.2.40-dev.e80f97d → 0.2.41-dev.2d0abe7
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/cache/DbQueryResultCache.js +12 -3
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +24 -30
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +2 -0
- package/browser/driver/mongodb/MongoQueryRunner.js +3 -0
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +37 -39
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +1 -1
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +13 -24
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +1 -0
- package/browser/driver/postgres/PostgresDriver.js +16 -7
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +5 -0
- package/browser/driver/postgres/PostgresQueryRunner.js +314 -135
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +36 -42
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +31 -33
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/MetadataTableType.d.ts +5 -0
- package/browser/driver/types/MetadataTableType.js +8 -0
- package/browser/driver/types/MetadataTableType.js.map +1 -0
- package/browser/find-options/FindTreeOptions.d.ts +5 -1
- package/browser/find-options/FindTreeOptions.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +55 -48
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +23 -0
- package/browser/query-runner/BaseQueryRunner.js +37 -0
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +5 -0
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/FindTreesOptions.d.ts +9 -0
- package/browser/repository/FindTreesOptions.js +3 -0
- package/browser/repository/FindTreesOptions.js.map +1 -0
- package/browser/repository/TreeRepository.d.ts +4 -1
- package/browser/repository/TreeRepository.js +8 -4
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +58 -49
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/cache/DbQueryResultCache.js +12 -3
- package/cache/DbQueryResultCache.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +24 -30
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +2 -0
- package/driver/mongodb/MongoQueryRunner.js +3 -0
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +37 -39
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +1 -1
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +13 -24
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +1 -0
- package/driver/postgres/PostgresDriver.js +16 -7
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +5 -0
- package/driver/postgres/PostgresQueryRunner.js +314 -135
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +36 -42
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +31 -33
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/MetadataTableType.d.ts +5 -0
- package/driver/types/MetadataTableType.js +11 -0
- package/driver/types/MetadataTableType.js.map +1 -0
- package/find-options/FindTreeOptions.d.ts +5 -1
- package/find-options/FindTreeOptions.js.map +1 -1
- package/migration/MigrationExecutor.js +55 -48
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/query-runner/BaseQueryRunner.d.ts +23 -0
- package/query-runner/BaseQueryRunner.js +37 -0
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +5 -0
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/FindTreesOptions.d.ts +9 -0
- package/repository/FindTreesOptions.js +4 -0
- package/repository/FindTreesOptions.js.map +1 -0
- package/repository/TreeRepository.d.ts +4 -1
- package/repository/TreeRepository.js +7 -3
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
- package/schema-builder/RdbmsSchemaBuilder.js +58 -49
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
|
@@ -21,6 +21,7 @@ var Query_1 = require("../Query");
|
|
|
21
21
|
var VersionUtils_1 = require("../../util/VersionUtils");
|
|
22
22
|
var error_1 = require("../../error");
|
|
23
23
|
var QueryResult_1 = require("../../query-runner/QueryResult");
|
|
24
|
+
var MetadataTableType_1 = require("../types/MetadataTableType");
|
|
24
25
|
/**
|
|
25
26
|
* Runs queries on a single postgres database connection.
|
|
26
27
|
*/
|
|
@@ -222,23 +223,25 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
222
223
|
if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)
|
|
223
224
|
this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
|
|
224
225
|
result = new QueryResult_1.QueryResult();
|
|
225
|
-
if (raw
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
226
|
+
if (raw) {
|
|
227
|
+
if (raw.hasOwnProperty('rows')) {
|
|
228
|
+
result.records = raw.rows;
|
|
229
|
+
}
|
|
230
|
+
if (raw.hasOwnProperty('rowCount')) {
|
|
231
|
+
result.affected = raw.rowCount;
|
|
232
|
+
}
|
|
233
|
+
switch (raw.command) {
|
|
234
|
+
case "DELETE":
|
|
235
|
+
case "UPDATE":
|
|
236
|
+
// for UPDATE and DELETE query additionally return number of affected rows
|
|
237
|
+
result.raw = [raw.rows, raw.rowCount];
|
|
238
|
+
break;
|
|
239
|
+
default:
|
|
240
|
+
result.raw = raw.rows;
|
|
241
|
+
}
|
|
242
|
+
if (!useStructuredResult) {
|
|
243
|
+
return [2 /*return*/, result.raw];
|
|
244
|
+
}
|
|
242
245
|
}
|
|
243
246
|
return [2 /*return*/, result];
|
|
244
247
|
case 4:
|
|
@@ -509,35 +512,35 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
509
512
|
if (createForeignKeys === void 0) { createForeignKeys = true; }
|
|
510
513
|
if (createIndices === void 0) { createIndices = true; }
|
|
511
514
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
512
|
-
var isTableExist, upQueries, downQueries, enumColumns, createdEnumTypes, enumColumns_1, enumColumns_1_1, column, hasEnum, enumName, e_1_1;
|
|
513
|
-
var e_1, _a;
|
|
515
|
+
var isTableExist, upQueries, downQueries, enumColumns, createdEnumTypes, enumColumns_1, enumColumns_1_1, column, hasEnum, enumName, e_1_1, generatedColumns, generatedColumns_1, generatedColumns_1_1, column, tableNameWithSchema, tableName, schema, insertQuery, deleteQuery, e_2_1;
|
|
516
|
+
var e_1, _a, e_2, _b;
|
|
514
517
|
var _this = this;
|
|
515
|
-
return (0, tslib_1.__generator)(this, function (
|
|
516
|
-
switch (
|
|
518
|
+
return (0, tslib_1.__generator)(this, function (_c) {
|
|
519
|
+
switch (_c.label) {
|
|
517
520
|
case 0:
|
|
518
521
|
if (!ifNotExist) return [3 /*break*/, 2];
|
|
519
522
|
return [4 /*yield*/, this.hasTable(table)];
|
|
520
523
|
case 1:
|
|
521
|
-
isTableExist =
|
|
524
|
+
isTableExist = _c.sent();
|
|
522
525
|
if (isTableExist)
|
|
523
526
|
return [2 /*return*/, Promise.resolve()];
|
|
524
|
-
|
|
527
|
+
_c.label = 2;
|
|
525
528
|
case 2:
|
|
526
529
|
upQueries = [];
|
|
527
530
|
downQueries = [];
|
|
528
531
|
enumColumns = table.columns.filter(function (column) { return column.type === "enum" || column.type === "simple-enum"; });
|
|
529
532
|
createdEnumTypes = [];
|
|
530
|
-
|
|
533
|
+
_c.label = 3;
|
|
531
534
|
case 3:
|
|
532
|
-
|
|
535
|
+
_c.trys.push([3, 8, 9, 10]);
|
|
533
536
|
enumColumns_1 = (0, tslib_1.__values)(enumColumns), enumColumns_1_1 = enumColumns_1.next();
|
|
534
|
-
|
|
537
|
+
_c.label = 4;
|
|
535
538
|
case 4:
|
|
536
539
|
if (!!enumColumns_1_1.done) return [3 /*break*/, 7];
|
|
537
540
|
column = enumColumns_1_1.value;
|
|
538
541
|
return [4 /*yield*/, this.hasEnumType(table, column)];
|
|
539
542
|
case 5:
|
|
540
|
-
hasEnum =
|
|
543
|
+
hasEnum = _c.sent();
|
|
541
544
|
enumName = this.buildEnumName(table, column);
|
|
542
545
|
// if enum with the same "enumName" is defined more then once, me must prevent double creation
|
|
543
546
|
if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) {
|
|
@@ -545,13 +548,13 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
545
548
|
upQueries.push(this.createEnumTypeSql(table, column, enumName));
|
|
546
549
|
downQueries.push(this.dropEnumTypeSql(table, column, enumName));
|
|
547
550
|
}
|
|
548
|
-
|
|
551
|
+
_c.label = 6;
|
|
549
552
|
case 6:
|
|
550
553
|
enumColumns_1_1 = enumColumns_1.next();
|
|
551
554
|
return [3 /*break*/, 4];
|
|
552
555
|
case 7: return [3 /*break*/, 10];
|
|
553
556
|
case 8:
|
|
554
|
-
e_1_1 =
|
|
557
|
+
e_1_1 = _c.sent();
|
|
555
558
|
e_1 = { error: e_1_1 };
|
|
556
559
|
return [3 /*break*/, 10];
|
|
557
560
|
case 9:
|
|
@@ -561,6 +564,54 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
561
564
|
finally { if (e_1) throw e_1.error; }
|
|
562
565
|
return [7 /*endfinally*/];
|
|
563
566
|
case 10:
|
|
567
|
+
generatedColumns = table.columns.filter(function (column) { return column.generatedType === "STORED" && column.asExpression; });
|
|
568
|
+
_c.label = 11;
|
|
569
|
+
case 11:
|
|
570
|
+
_c.trys.push([11, 16, 17, 18]);
|
|
571
|
+
generatedColumns_1 = (0, tslib_1.__values)(generatedColumns), generatedColumns_1_1 = generatedColumns_1.next();
|
|
572
|
+
_c.label = 12;
|
|
573
|
+
case 12:
|
|
574
|
+
if (!!generatedColumns_1_1.done) return [3 /*break*/, 15];
|
|
575
|
+
column = generatedColumns_1_1.value;
|
|
576
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
577
|
+
case 13:
|
|
578
|
+
tableNameWithSchema = (_c.sent()).split('.');
|
|
579
|
+
tableName = tableNameWithSchema[1];
|
|
580
|
+
schema = tableNameWithSchema[0];
|
|
581
|
+
insertQuery = this.insertTypeormMetadataSql({
|
|
582
|
+
database: this.driver.database,
|
|
583
|
+
schema: schema,
|
|
584
|
+
table: tableName,
|
|
585
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
586
|
+
name: column.name,
|
|
587
|
+
value: column.asExpression
|
|
588
|
+
});
|
|
589
|
+
deleteQuery = this.deleteTypeormMetadataSql({
|
|
590
|
+
database: this.driver.database,
|
|
591
|
+
schema: schema,
|
|
592
|
+
table: tableName,
|
|
593
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
594
|
+
name: column.name
|
|
595
|
+
});
|
|
596
|
+
upQueries.push(deleteQuery);
|
|
597
|
+
upQueries.push(insertQuery);
|
|
598
|
+
downQueries.push(deleteQuery);
|
|
599
|
+
_c.label = 14;
|
|
600
|
+
case 14:
|
|
601
|
+
generatedColumns_1_1 = generatedColumns_1.next();
|
|
602
|
+
return [3 /*break*/, 12];
|
|
603
|
+
case 15: return [3 /*break*/, 18];
|
|
604
|
+
case 16:
|
|
605
|
+
e_2_1 = _c.sent();
|
|
606
|
+
e_2 = { error: e_2_1 };
|
|
607
|
+
return [3 /*break*/, 18];
|
|
608
|
+
case 17:
|
|
609
|
+
try {
|
|
610
|
+
if (generatedColumns_1_1 && !generatedColumns_1_1.done && (_b = generatedColumns_1.return)) _b.call(generatedColumns_1);
|
|
611
|
+
}
|
|
612
|
+
finally { if (e_2) throw e_2.error; }
|
|
613
|
+
return [7 /*endfinally*/];
|
|
614
|
+
case 18:
|
|
564
615
|
upQueries.push(this.createTableSql(table, createForeignKeys));
|
|
565
616
|
downQueries.push(this.dropTableSql(table));
|
|
566
617
|
// if createForeignKeys is true, we must drop created foreign keys in down query.
|
|
@@ -577,8 +628,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
577
628
|
});
|
|
578
629
|
}
|
|
579
630
|
return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
580
|
-
case
|
|
581
|
-
|
|
631
|
+
case 19:
|
|
632
|
+
_c.sent();
|
|
582
633
|
return [2 /*return*/];
|
|
583
634
|
}
|
|
584
635
|
});
|
|
@@ -696,8 +747,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
696
747
|
*/
|
|
697
748
|
PostgresQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {
|
|
698
749
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
699
|
-
var upQueries, downQueries, oldTable, _a, newTable, _b, schemaName, oldTableName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType,
|
|
700
|
-
var
|
|
750
|
+
var upQueries, downQueries, oldTable, _a, newTable, _b, schemaName, oldTableName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType, e_3_1;
|
|
751
|
+
var e_3, _c;
|
|
701
752
|
var _this = this;
|
|
702
753
|
return (0, tslib_1.__generator)(this, function (_d) {
|
|
703
754
|
switch (_d.label) {
|
|
@@ -795,14 +846,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
795
846
|
return [3 /*break*/, 5];
|
|
796
847
|
case 8: return [3 /*break*/, 11];
|
|
797
848
|
case 9:
|
|
798
|
-
|
|
799
|
-
|
|
849
|
+
e_3_1 = _d.sent();
|
|
850
|
+
e_3 = { error: e_3_1 };
|
|
800
851
|
return [3 /*break*/, 11];
|
|
801
852
|
case 10:
|
|
802
853
|
try {
|
|
803
854
|
if (enumColumns_2_1 && !enumColumns_2_1.done && (_c = enumColumns_2.return)) _c.call(enumColumns_2);
|
|
804
855
|
}
|
|
805
|
-
finally { if (
|
|
856
|
+
finally { if (e_3) throw e_3.error; }
|
|
806
857
|
return [7 /*endfinally*/];
|
|
807
858
|
case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
808
859
|
case 12:
|
|
@@ -817,7 +868,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
817
868
|
*/
|
|
818
869
|
PostgresQueryRunner.prototype.addColumn = function (tableOrName, column) {
|
|
819
870
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
820
|
-
var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint;
|
|
871
|
+
var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint, tableNameWithSchema, tableName, schema, insertQuery, deleteQuery;
|
|
821
872
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
822
873
|
switch (_b.label) {
|
|
823
874
|
case 0:
|
|
@@ -876,13 +927,39 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
876
927
|
upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (\"" + column.name + "\")"));
|
|
877
928
|
downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueConstraint.name + "\""));
|
|
878
929
|
}
|
|
930
|
+
if (!(column.generatedType === "STORED" && column.asExpression)) return [3 /*break*/, 7];
|
|
931
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
932
|
+
case 6:
|
|
933
|
+
tableNameWithSchema = (_b.sent()).split('.');
|
|
934
|
+
tableName = tableNameWithSchema[1];
|
|
935
|
+
schema = tableNameWithSchema[0];
|
|
936
|
+
insertQuery = this.insertTypeormMetadataSql({
|
|
937
|
+
database: this.driver.database,
|
|
938
|
+
schema: schema,
|
|
939
|
+
table: tableName,
|
|
940
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
941
|
+
name: column.name,
|
|
942
|
+
value: column.asExpression
|
|
943
|
+
});
|
|
944
|
+
deleteQuery = this.deleteTypeormMetadataSql({
|
|
945
|
+
database: this.driver.database,
|
|
946
|
+
schema: schema,
|
|
947
|
+
table: tableName,
|
|
948
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
949
|
+
name: column.name
|
|
950
|
+
});
|
|
951
|
+
upQueries.push(deleteQuery);
|
|
952
|
+
upQueries.push(insertQuery);
|
|
953
|
+
downQueries.push(deleteQuery);
|
|
954
|
+
_b.label = 7;
|
|
955
|
+
case 7:
|
|
879
956
|
// create column's comment
|
|
880
957
|
if (column.comment) {
|
|
881
958
|
upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
|
|
882
959
|
downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
|
|
883
960
|
}
|
|
884
961
|
return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
885
|
-
case
|
|
962
|
+
case 8:
|
|
886
963
|
_b.sent();
|
|
887
964
|
clonedTable.addColumn(column);
|
|
888
965
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -896,8 +973,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
896
973
|
*/
|
|
897
974
|
PostgresQueryRunner.prototype.addColumns = function (tableOrName, columns) {
|
|
898
975
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
899
|
-
var columns_1, columns_1_1, column,
|
|
900
|
-
var
|
|
976
|
+
var columns_1, columns_1_1, column, e_4_1;
|
|
977
|
+
var e_4, _a;
|
|
901
978
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
902
979
|
switch (_b.label) {
|
|
903
980
|
case 0:
|
|
@@ -916,14 +993,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
916
993
|
return [3 /*break*/, 1];
|
|
917
994
|
case 4: return [3 /*break*/, 7];
|
|
918
995
|
case 5:
|
|
919
|
-
|
|
920
|
-
|
|
996
|
+
e_4_1 = _b.sent();
|
|
997
|
+
e_4 = { error: e_4_1 };
|
|
921
998
|
return [3 /*break*/, 7];
|
|
922
999
|
case 6:
|
|
923
1000
|
try {
|
|
924
1001
|
if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
|
|
925
1002
|
}
|
|
926
|
-
finally { if (
|
|
1003
|
+
finally { if (e_4) throw e_4.error; }
|
|
927
1004
|
return [7 /*endfinally*/];
|
|
928
1005
|
case 7: return [2 /*return*/];
|
|
929
1006
|
}
|
|
@@ -968,7 +1045,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
968
1045
|
*/
|
|
969
1046
|
PostgresQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {
|
|
970
1047
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
971
|
-
var table, _a, clonedTable, upQueries, downQueries, defaultValueChanged, oldColumn, oldEnumType, primaryColumns, columnNames, oldPkName, newPkName, sequencePath, sequenceName, newSequencePath, newSequenceName, up, down, oldTableColumn, arraySuffix, newEnumName, oldEnumName, oldEnumNameWithoutSchema, oldEnumNameWithSchema_old, oldEnumNameWithoutSchema_old, upType, downType, primaryColumns, pkName, columnNames, column, pkName, columnNames, primaryColumn, column, pkName, columnNames, uniqueConstraint, uniqueConstraint;
|
|
1048
|
+
var table, _a, clonedTable, upQueries, downQueries, defaultValueChanged, oldColumn, oldEnumType, primaryColumns, columnNames, oldPkName, newPkName, sequencePath, sequenceName, newSequencePath, newSequenceName, up, down, oldTableColumn, arraySuffix, newEnumName, oldEnumName, oldEnumNameWithoutSchema, oldEnumNameWithSchema_old, oldEnumNameWithoutSchema_old, upType, downType, primaryColumns, pkName, columnNames, column, pkName, columnNames, primaryColumn, column, pkName, columnNames, uniqueConstraint, uniqueConstraint, tableNameWithSchema, tableName, schema;
|
|
972
1049
|
var _this = this;
|
|
973
1050
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
974
1051
|
switch (_b.label) {
|
|
@@ -991,7 +1068,11 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
991
1068
|
: table.columns.find(function (column) { return column.name === oldTableColumnOrName; });
|
|
992
1069
|
if (!oldColumn)
|
|
993
1070
|
throw new error_1.TypeORMError("Column \"" + oldTableColumnOrName + "\" was not found in the \"" + table.name + "\" table.");
|
|
994
|
-
if (!(oldColumn.type !== newColumn.type
|
|
1071
|
+
if (!(oldColumn.type !== newColumn.type
|
|
1072
|
+
|| oldColumn.length !== newColumn.length
|
|
1073
|
+
|| newColumn.isArray !== oldColumn.isArray
|
|
1074
|
+
|| (!oldColumn.generatedType && newColumn.generatedType === "STORED")
|
|
1075
|
+
|| (oldColumn.asExpression !== newColumn.asExpression && newColumn.generatedType === "STORED"))) return [3 /*break*/, 6];
|
|
995
1076
|
// To avoid data conversion, we just recreate column
|
|
996
1077
|
return [4 /*yield*/, this.dropColumn(table, oldColumn)];
|
|
997
1078
|
case 4:
|
|
@@ -1002,7 +1083,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1002
1083
|
_b.sent();
|
|
1003
1084
|
// update cloned table
|
|
1004
1085
|
clonedTable = table.clone();
|
|
1005
|
-
return [3 /*break*/,
|
|
1086
|
+
return [3 /*break*/, 11];
|
|
1006
1087
|
case 6:
|
|
1007
1088
|
if (!(oldColumn.name !== newColumn.name)) return [3 /*break*/, 9];
|
|
1008
1089
|
// rename column
|
|
@@ -1224,9 +1305,45 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1224
1305
|
upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(newColumn)));
|
|
1225
1306
|
downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(oldColumn)));
|
|
1226
1307
|
}
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1308
|
+
if (!(newColumn.generatedType !== oldColumn.generatedType)) return [3 /*break*/, 11];
|
|
1309
|
+
if (!(!newColumn.generatedType || newColumn.generatedType === "VIRTUAL")) return [3 /*break*/, 11];
|
|
1310
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
1311
|
+
case 10:
|
|
1312
|
+
tableNameWithSchema = (_b.sent()).split('.');
|
|
1313
|
+
tableName = tableNameWithSchema[1];
|
|
1314
|
+
schema = tableNameWithSchema[0];
|
|
1315
|
+
upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " RENAME COLUMN \"" + oldColumn.name + "\" TO \"TEMP_OLD_" + oldColumn.name + "\""));
|
|
1316
|
+
upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " ADD " + this.buildCreateColumnSql(table, newColumn)));
|
|
1317
|
+
upQueries.push(new Query_1.Query("UPDATE " + this.escapePath(table) + " SET \"" + newColumn.name + "\" = \"TEMP_OLD_" + oldColumn.name + "\""));
|
|
1318
|
+
upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " DROP COLUMN \"TEMP_OLD_" + oldColumn.name + "\""));
|
|
1319
|
+
upQueries.push(this.deleteTypeormMetadataSql({
|
|
1320
|
+
database: this.driver.database,
|
|
1321
|
+
schema: schema,
|
|
1322
|
+
table: tableName,
|
|
1323
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1324
|
+
name: oldColumn.name
|
|
1325
|
+
}));
|
|
1326
|
+
// However, we can't copy it back on downgrade. It needs to regenerate.
|
|
1327
|
+
downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " DROP COLUMN \"" + newColumn.name + "\""));
|
|
1328
|
+
downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " ADD " + this.buildCreateColumnSql(table, oldColumn)));
|
|
1329
|
+
downQueries.push(this.deleteTypeormMetadataSql({
|
|
1330
|
+
database: this.driver.database,
|
|
1331
|
+
schema: schema,
|
|
1332
|
+
table: tableName,
|
|
1333
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1334
|
+
name: newColumn.name
|
|
1335
|
+
}));
|
|
1336
|
+
downQueries.push(this.insertTypeormMetadataSql({
|
|
1337
|
+
database: this.driver.database,
|
|
1338
|
+
schema: schema,
|
|
1339
|
+
table: tableName,
|
|
1340
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1341
|
+
name: oldColumn.name,
|
|
1342
|
+
value: oldColumn.asExpression
|
|
1343
|
+
}));
|
|
1344
|
+
_b.label = 11;
|
|
1345
|
+
case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
1346
|
+
case 12:
|
|
1230
1347
|
_b.sent();
|
|
1231
1348
|
this.replaceCachedTable(table, clonedTable);
|
|
1232
1349
|
return [2 /*return*/];
|
|
@@ -1239,8 +1356,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1239
1356
|
*/
|
|
1240
1357
|
PostgresQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {
|
|
1241
1358
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1242
|
-
var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn,
|
|
1243
|
-
var
|
|
1359
|
+
var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn, e_5_1;
|
|
1360
|
+
var e_5, _b;
|
|
1244
1361
|
return (0, tslib_1.__generator)(this, function (_c) {
|
|
1245
1362
|
switch (_c.label) {
|
|
1246
1363
|
case 0:
|
|
@@ -1259,14 +1376,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1259
1376
|
return [3 /*break*/, 1];
|
|
1260
1377
|
case 4: return [3 /*break*/, 7];
|
|
1261
1378
|
case 5:
|
|
1262
|
-
|
|
1263
|
-
|
|
1379
|
+
e_5_1 = _c.sent();
|
|
1380
|
+
e_5 = { error: e_5_1 };
|
|
1264
1381
|
return [3 /*break*/, 7];
|
|
1265
1382
|
case 6:
|
|
1266
1383
|
try {
|
|
1267
1384
|
if (changedColumns_1_1 && !changedColumns_1_1.done && (_b = changedColumns_1.return)) _b.call(changedColumns_1);
|
|
1268
1385
|
}
|
|
1269
|
-
finally { if (
|
|
1386
|
+
finally { if (e_5) throw e_5.error; }
|
|
1270
1387
|
return [7 /*endfinally*/];
|
|
1271
1388
|
case 7: return [2 /*return*/];
|
|
1272
1389
|
}
|
|
@@ -1278,7 +1395,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1278
1395
|
*/
|
|
1279
1396
|
PostgresQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {
|
|
1280
1397
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1281
|
-
var table, _a, column, clonedTable, upQueries, downQueries, pkName, columnNames, tableColumn, pkName_2, columnNames_2, columnIndex, columnCheck, columnUnique, hasEnum, enumType, escapedEnumName;
|
|
1398
|
+
var table, _a, column, clonedTable, upQueries, downQueries, pkName, columnNames, tableColumn, pkName_2, columnNames_2, columnIndex, columnCheck, columnUnique, hasEnum, enumType, escapedEnumName, tableNameWithSchema, tableName, schema, insertQuery, deleteQuery;
|
|
1282
1399
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1283
1400
|
switch (_b.label) {
|
|
1284
1401
|
case 0:
|
|
@@ -1345,8 +1462,33 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1345
1462
|
upQueries.push(this.dropEnumTypeSql(table, column, escapedEnumName));
|
|
1346
1463
|
downQueries.push(this.createEnumTypeSql(table, column, escapedEnumName));
|
|
1347
1464
|
_b.label = 6;
|
|
1348
|
-
case 6:
|
|
1465
|
+
case 6:
|
|
1466
|
+
if (!(column.generatedType === "STORED")) return [3 /*break*/, 8];
|
|
1467
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
1349
1468
|
case 7:
|
|
1469
|
+
tableNameWithSchema = (_b.sent()).split('.');
|
|
1470
|
+
tableName = tableNameWithSchema[1];
|
|
1471
|
+
schema = tableNameWithSchema[0];
|
|
1472
|
+
insertQuery = this.deleteTypeormMetadataSql({
|
|
1473
|
+
database: this.driver.database,
|
|
1474
|
+
schema: schema,
|
|
1475
|
+
table: tableName,
|
|
1476
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1477
|
+
name: column.name
|
|
1478
|
+
});
|
|
1479
|
+
deleteQuery = this.insertTypeormMetadataSql({
|
|
1480
|
+
database: this.driver.database,
|
|
1481
|
+
schema: schema,
|
|
1482
|
+
table: tableName,
|
|
1483
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1484
|
+
name: column.name,
|
|
1485
|
+
value: column.asExpression
|
|
1486
|
+
});
|
|
1487
|
+
upQueries.push(insertQuery);
|
|
1488
|
+
downQueries.push(deleteQuery);
|
|
1489
|
+
_b.label = 8;
|
|
1490
|
+
case 8: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
1491
|
+
case 9:
|
|
1350
1492
|
_b.sent();
|
|
1351
1493
|
clonedTable.removeColumn(column);
|
|
1352
1494
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -1360,8 +1502,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1360
1502
|
*/
|
|
1361
1503
|
PostgresQueryRunner.prototype.dropColumns = function (tableOrName, columns) {
|
|
1362
1504
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1363
|
-
var columns_2, columns_2_1, column,
|
|
1364
|
-
var
|
|
1505
|
+
var columns_2, columns_2_1, column, e_6_1;
|
|
1506
|
+
var e_6, _a;
|
|
1365
1507
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1366
1508
|
switch (_b.label) {
|
|
1367
1509
|
case 0:
|
|
@@ -1380,14 +1522,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1380
1522
|
return [3 /*break*/, 1];
|
|
1381
1523
|
case 4: return [3 /*break*/, 7];
|
|
1382
1524
|
case 5:
|
|
1383
|
-
|
|
1384
|
-
|
|
1525
|
+
e_6_1 = _b.sent();
|
|
1526
|
+
e_6 = { error: e_6_1 };
|
|
1385
1527
|
return [3 /*break*/, 7];
|
|
1386
1528
|
case 6:
|
|
1387
1529
|
try {
|
|
1388
1530
|
if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
|
|
1389
1531
|
}
|
|
1390
|
-
finally { if (
|
|
1532
|
+
finally { if (e_6) throw e_6.error; }
|
|
1391
1533
|
return [7 /*endfinally*/];
|
|
1392
1534
|
case 7: return [2 /*return*/];
|
|
1393
1535
|
}
|
|
@@ -1543,8 +1685,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1543
1685
|
*/
|
|
1544
1686
|
PostgresQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {
|
|
1545
1687
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1546
|
-
var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint,
|
|
1547
|
-
var
|
|
1688
|
+
var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint, e_7_1;
|
|
1689
|
+
var e_7, _a;
|
|
1548
1690
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1549
1691
|
switch (_b.label) {
|
|
1550
1692
|
case 0:
|
|
@@ -1563,14 +1705,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1563
1705
|
return [3 /*break*/, 1];
|
|
1564
1706
|
case 4: return [3 /*break*/, 7];
|
|
1565
1707
|
case 5:
|
|
1566
|
-
|
|
1567
|
-
|
|
1708
|
+
e_7_1 = _b.sent();
|
|
1709
|
+
e_7 = { error: e_7_1 };
|
|
1568
1710
|
return [3 /*break*/, 7];
|
|
1569
1711
|
case 6:
|
|
1570
1712
|
try {
|
|
1571
1713
|
if (uniqueConstraints_1_1 && !uniqueConstraints_1_1.done && (_a = uniqueConstraints_1.return)) _a.call(uniqueConstraints_1);
|
|
1572
1714
|
}
|
|
1573
|
-
finally { if (
|
|
1715
|
+
finally { if (e_7) throw e_7.error; }
|
|
1574
1716
|
return [7 /*endfinally*/];
|
|
1575
1717
|
case 7: return [2 /*return*/];
|
|
1576
1718
|
}
|
|
@@ -1614,8 +1756,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1614
1756
|
*/
|
|
1615
1757
|
PostgresQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {
|
|
1616
1758
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1617
|
-
var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint,
|
|
1618
|
-
var
|
|
1759
|
+
var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint, e_8_1;
|
|
1760
|
+
var e_8, _a;
|
|
1619
1761
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1620
1762
|
switch (_b.label) {
|
|
1621
1763
|
case 0:
|
|
@@ -1634,14 +1776,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1634
1776
|
return [3 /*break*/, 1];
|
|
1635
1777
|
case 4: return [3 /*break*/, 7];
|
|
1636
1778
|
case 5:
|
|
1637
|
-
|
|
1638
|
-
|
|
1779
|
+
e_8_1 = _b.sent();
|
|
1780
|
+
e_8 = { error: e_8_1 };
|
|
1639
1781
|
return [3 /*break*/, 7];
|
|
1640
1782
|
case 6:
|
|
1641
1783
|
try {
|
|
1642
1784
|
if (uniqueConstraints_2_1 && !uniqueConstraints_2_1.done && (_a = uniqueConstraints_2.return)) _a.call(uniqueConstraints_2);
|
|
1643
1785
|
}
|
|
1644
|
-
finally { if (
|
|
1786
|
+
finally { if (e_8) throw e_8.error; }
|
|
1645
1787
|
return [7 /*endfinally*/];
|
|
1646
1788
|
case 7: return [2 /*return*/];
|
|
1647
1789
|
}
|
|
@@ -1889,8 +2031,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1889
2031
|
*/
|
|
1890
2032
|
PostgresQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {
|
|
1891
2033
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1892
|
-
var foreignKeys_1, foreignKeys_1_1, foreignKey,
|
|
1893
|
-
var
|
|
2034
|
+
var foreignKeys_1, foreignKeys_1_1, foreignKey, e_9_1;
|
|
2035
|
+
var e_9, _a;
|
|
1894
2036
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1895
2037
|
switch (_b.label) {
|
|
1896
2038
|
case 0:
|
|
@@ -1909,14 +2051,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1909
2051
|
return [3 /*break*/, 1];
|
|
1910
2052
|
case 4: return [3 /*break*/, 7];
|
|
1911
2053
|
case 5:
|
|
1912
|
-
|
|
1913
|
-
|
|
2054
|
+
e_9_1 = _b.sent();
|
|
2055
|
+
e_9 = { error: e_9_1 };
|
|
1914
2056
|
return [3 /*break*/, 7];
|
|
1915
2057
|
case 6:
|
|
1916
2058
|
try {
|
|
1917
2059
|
if (foreignKeys_1_1 && !foreignKeys_1_1.done && (_a = foreignKeys_1.return)) _a.call(foreignKeys_1);
|
|
1918
2060
|
}
|
|
1919
|
-
finally { if (
|
|
2061
|
+
finally { if (e_9) throw e_9.error; }
|
|
1920
2062
|
return [7 /*endfinally*/];
|
|
1921
2063
|
case 7: return [2 /*return*/];
|
|
1922
2064
|
}
|
|
@@ -1960,8 +2102,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1960
2102
|
*/
|
|
1961
2103
|
PostgresQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {
|
|
1962
2104
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1963
|
-
var foreignKeys_2, foreignKeys_2_1, foreignKey,
|
|
1964
|
-
var
|
|
2105
|
+
var foreignKeys_2, foreignKeys_2_1, foreignKey, e_10_1;
|
|
2106
|
+
var e_10, _a;
|
|
1965
2107
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
1966
2108
|
switch (_b.label) {
|
|
1967
2109
|
case 0:
|
|
@@ -1980,14 +2122,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1980
2122
|
return [3 /*break*/, 1];
|
|
1981
2123
|
case 4: return [3 /*break*/, 7];
|
|
1982
2124
|
case 5:
|
|
1983
|
-
|
|
1984
|
-
|
|
2125
|
+
e_10_1 = _b.sent();
|
|
2126
|
+
e_10 = { error: e_10_1 };
|
|
1985
2127
|
return [3 /*break*/, 7];
|
|
1986
2128
|
case 6:
|
|
1987
2129
|
try {
|
|
1988
2130
|
if (foreignKeys_2_1 && !foreignKeys_2_1.done && (_a = foreignKeys_2.return)) _a.call(foreignKeys_2);
|
|
1989
2131
|
}
|
|
1990
|
-
finally { if (
|
|
2132
|
+
finally { if (e_10) throw e_10.error; }
|
|
1991
2133
|
return [7 /*endfinally*/];
|
|
1992
2134
|
case 7: return [2 /*return*/];
|
|
1993
2135
|
}
|
|
@@ -2031,8 +2173,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2031
2173
|
*/
|
|
2032
2174
|
PostgresQueryRunner.prototype.createIndices = function (tableOrName, indices) {
|
|
2033
2175
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
2034
|
-
var indices_1, indices_1_1, index,
|
|
2035
|
-
var
|
|
2176
|
+
var indices_1, indices_1_1, index, e_11_1;
|
|
2177
|
+
var e_11, _a;
|
|
2036
2178
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
2037
2179
|
switch (_b.label) {
|
|
2038
2180
|
case 0:
|
|
@@ -2051,14 +2193,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2051
2193
|
return [3 /*break*/, 1];
|
|
2052
2194
|
case 4: return [3 /*break*/, 7];
|
|
2053
2195
|
case 5:
|
|
2054
|
-
|
|
2055
|
-
|
|
2196
|
+
e_11_1 = _b.sent();
|
|
2197
|
+
e_11 = { error: e_11_1 };
|
|
2056
2198
|
return [3 /*break*/, 7];
|
|
2057
2199
|
case 6:
|
|
2058
2200
|
try {
|
|
2059
2201
|
if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1);
|
|
2060
2202
|
}
|
|
2061
|
-
finally { if (
|
|
2203
|
+
finally { if (e_11) throw e_11.error; }
|
|
2062
2204
|
return [7 /*endfinally*/];
|
|
2063
2205
|
case 7: return [2 /*return*/];
|
|
2064
2206
|
}
|
|
@@ -2102,8 +2244,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2102
2244
|
*/
|
|
2103
2245
|
PostgresQueryRunner.prototype.dropIndices = function (tableOrName, indices) {
|
|
2104
2246
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
2105
|
-
var indices_2, indices_2_1, index,
|
|
2106
|
-
var
|
|
2247
|
+
var indices_2, indices_2_1, index, e_12_1;
|
|
2248
|
+
var e_12, _a;
|
|
2107
2249
|
return (0, tslib_1.__generator)(this, function (_b) {
|
|
2108
2250
|
switch (_b.label) {
|
|
2109
2251
|
case 0:
|
|
@@ -2122,14 +2264,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2122
2264
|
return [3 /*break*/, 1];
|
|
2123
2265
|
case 4: return [3 /*break*/, 7];
|
|
2124
2266
|
case 5:
|
|
2125
|
-
|
|
2126
|
-
|
|
2267
|
+
e_12_1 = _b.sent();
|
|
2268
|
+
e_12 = { error: e_12_1 };
|
|
2127
2269
|
return [3 /*break*/, 7];
|
|
2128
2270
|
case 6:
|
|
2129
2271
|
try {
|
|
2130
2272
|
if (indices_2_1 && !indices_2_1.done && (_a = indices_2.return)) _a.call(indices_2);
|
|
2131
2273
|
}
|
|
2132
|
-
finally { if (
|
|
2274
|
+
finally { if (e_12) throw e_12.error; }
|
|
2133
2275
|
return [7 /*endfinally*/];
|
|
2134
2276
|
case 7: return [2 /*return*/];
|
|
2135
2277
|
}
|
|
@@ -2273,7 +2415,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2273
2415
|
query = "SELECT \"t\".* FROM " + this.escapePath(this.getTypeormMetadataTableName()) + " \"t\" " +
|
|
2274
2416
|
"INNER JOIN \"pg_catalog\".\"pg_class\" \"c\" ON \"c\".\"relname\" = \"t\".\"name\" " +
|
|
2275
2417
|
"INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"c\".\"relnamespace\" AND \"n\".\"nspname\" = \"t\".\"schema\" " +
|
|
2276
|
-
("WHERE \"t\".\"type\" IN ('VIEW', 'MATERIALIZED_VIEW') " + (viewsCondition ? "AND (" + viewsCondition + ")" : ""));
|
|
2418
|
+
("WHERE \"t\".\"type\" IN ('" + MetadataTableType_1.MetadataTableType.VIEW + "', '" + MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW + "') " + (viewsCondition ? "AND (" + viewsCondition + ")" : ""));
|
|
2277
2419
|
return [4 /*yield*/, this.query(query)];
|
|
2278
2420
|
case 4:
|
|
2279
2421
|
dbViews = _a.sent();
|
|
@@ -2284,7 +2426,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2284
2426
|
view.schema = dbView["schema"];
|
|
2285
2427
|
view.name = _this.driver.buildTableName(dbView["name"], schema);
|
|
2286
2428
|
view.expression = dbView["value"];
|
|
2287
|
-
view.materialized = dbView["type"] ===
|
|
2429
|
+
view.materialized = dbView["type"] === MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW;
|
|
2288
2430
|
return view;
|
|
2289
2431
|
})];
|
|
2290
2432
|
}
|
|
@@ -2435,7 +2577,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2435
2577
|
return [4 /*yield*/, Promise.all(dbColumns
|
|
2436
2578
|
.filter(function (dbColumn) { return (dbColumn["table_name"] === dbTable["table_name"] && dbColumn["table_schema"] === dbTable["table_schema"]); })
|
|
2437
2579
|
.map(function (dbColumn) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
2438
|
-
var columnConstraints, tableColumn, name, builtEnumName, enumName, sql, results, type, geometryColumnSql, results, geographyColumnSql, results, length, match,
|
|
2580
|
+
var columnConstraints, tableColumn, name, builtEnumName, enumName, sql, results, type, geometryColumnSql, results, geographyColumnSql, results, length, match, uniqueConstraints, isConstraintComposite, serialDefaultName, serialDefaultPath, defaultWithoutQuotes, asExpressionQuery, results;
|
|
2439
2581
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
2440
2582
|
switch (_a.label) {
|
|
2441
2583
|
case 0:
|
|
@@ -2535,13 +2677,13 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2535
2677
|
}
|
|
2536
2678
|
tableColumn.isNullable = dbColumn["is_nullable"] === "YES";
|
|
2537
2679
|
tableColumn.isPrimary = !!columnConstraints.find(function (constraint) { return constraint["constraint_type"] === "PRIMARY"; });
|
|
2538
|
-
|
|
2539
|
-
isConstraintComposite = uniqueConstraint
|
|
2540
|
-
|
|
2680
|
+
uniqueConstraints = columnConstraints.filter(function (constraint) { return constraint["constraint_type"] === "UNIQUE"; });
|
|
2681
|
+
isConstraintComposite = uniqueConstraints.every(function (uniqueConstraint) {
|
|
2682
|
+
return dbConstraints.some(function (dbConstraint) { return dbConstraint["constraint_type"] === "UNIQUE"
|
|
2541
2683
|
&& dbConstraint["constraint_name"] === uniqueConstraint["constraint_name"]
|
|
2542
|
-
&& dbConstraint["column_name"] !== dbColumn["column_name"]; })
|
|
2543
|
-
|
|
2544
|
-
tableColumn.isUnique =
|
|
2684
|
+
&& dbConstraint["column_name"] !== dbColumn["column_name"]; });
|
|
2685
|
+
});
|
|
2686
|
+
tableColumn.isUnique = uniqueConstraints.length > 0 && !isConstraintComposite;
|
|
2545
2687
|
if (dbColumn.is_identity === "YES") { // Postgres 10+ Identity column
|
|
2546
2688
|
tableColumn.isGenerated = true;
|
|
2547
2689
|
tableColumn.generationStrategy = "identity";
|
|
@@ -2562,10 +2704,30 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2562
2704
|
tableColumn.default = dbColumn["column_default"];
|
|
2563
2705
|
}
|
|
2564
2706
|
else {
|
|
2565
|
-
tableColumn.default = dbColumn["column_default"].replace(/::[\w\s
|
|
2707
|
+
tableColumn.default = dbColumn["column_default"].replace(/::[\w\s\.\[\]\"]+/g, "");
|
|
2566
2708
|
tableColumn.default = tableColumn.default.replace(/^(-?\d+)$/, "'$1'");
|
|
2567
2709
|
}
|
|
2568
2710
|
}
|
|
2711
|
+
if (!(dbColumn["is_generated"] === "ALWAYS" && dbColumn["generation_expression"])) return [3 /*break*/, 9];
|
|
2712
|
+
// In postgres there is no VIRTUAL generated column type
|
|
2713
|
+
tableColumn.generatedType = "STORED";
|
|
2714
|
+
asExpressionQuery = "SELECT * FROM \"typeorm_metadata\" "
|
|
2715
|
+
+ (" WHERE \"table\" = '" + dbTable["table_name"] + "'")
|
|
2716
|
+
+ (" AND \"name\" = '" + tableColumn.name + "'")
|
|
2717
|
+
+ (" AND \"schema\" = '" + dbTable["table_schema"] + "'")
|
|
2718
|
+
+ (" AND \"database\" = '" + this.driver.database + "'")
|
|
2719
|
+
+ (" AND \"type\" = '" + MetadataTableType_1.MetadataTableType.GENERATED_COLUMN + "'");
|
|
2720
|
+
return [4 /*yield*/, this.query(asExpressionQuery)];
|
|
2721
|
+
case 8:
|
|
2722
|
+
results = _a.sent();
|
|
2723
|
+
if (results[0] && results[0].value) {
|
|
2724
|
+
tableColumn.asExpression = results[0].value;
|
|
2725
|
+
}
|
|
2726
|
+
else {
|
|
2727
|
+
tableColumn.asExpression = "";
|
|
2728
|
+
}
|
|
2729
|
+
_a.label = 9;
|
|
2730
|
+
case 9:
|
|
2569
2731
|
tableColumn.comment = dbColumn["description"] ? dbColumn["description"] : undefined;
|
|
2570
2732
|
if (dbColumn["character_set_name"])
|
|
2571
2733
|
tableColumn.charset = dbColumn["character_set_name"];
|
|
@@ -2763,24 +2925,19 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2763
2925
|
};
|
|
2764
2926
|
PostgresQueryRunner.prototype.insertViewDefinitionSql = function (view) {
|
|
2765
2927
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
2766
|
-
var currentSchema, _a, schema, name, type, expression
|
|
2767
|
-
return (0, tslib_1.__generator)(this, function (
|
|
2768
|
-
switch (
|
|
2928
|
+
var currentSchema, _a, schema, name, type, expression;
|
|
2929
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
2930
|
+
switch (_b.label) {
|
|
2769
2931
|
case 0: return [4 /*yield*/, this.getCurrentSchema()];
|
|
2770
2932
|
case 1:
|
|
2771
|
-
currentSchema =
|
|
2933
|
+
currentSchema = _b.sent();
|
|
2772
2934
|
_a = this.driver.parseTableName(view), schema = _a.schema, name = _a.tableName;
|
|
2773
2935
|
if (!schema) {
|
|
2774
2936
|
schema = currentSchema;
|
|
2775
2937
|
}
|
|
2776
|
-
type = view.materialized ?
|
|
2938
|
+
type = view.materialized ? MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW : MetadataTableType_1.MetadataTableType.VIEW;
|
|
2777
2939
|
expression = typeof view.expression === "string" ? view.expression.trim() : view.expression(this.connection).getQuery();
|
|
2778
|
-
|
|
2779
|
-
.insert()
|
|
2780
|
-
.into(this.getTypeormMetadataTableName())
|
|
2781
|
-
.values({ type: type, schema: schema, name: name, value: expression })
|
|
2782
|
-
.getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
|
|
2783
|
-
return [2 /*return*/, new Query_1.Query(query, parameters)];
|
|
2940
|
+
return [2 /*return*/, this.insertTypeormMetadataSql({ type: type, schema: schema, name: name, value: expression })];
|
|
2784
2941
|
}
|
|
2785
2942
|
});
|
|
2786
2943
|
});
|
|
@@ -2797,25 +2954,18 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2797
2954
|
*/
|
|
2798
2955
|
PostgresQueryRunner.prototype.deleteViewDefinitionSql = function (view) {
|
|
2799
2956
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
2800
|
-
var currentSchema, _a, schema, name, type
|
|
2801
|
-
return (0, tslib_1.__generator)(this, function (
|
|
2802
|
-
switch (
|
|
2957
|
+
var currentSchema, _a, schema, name, type;
|
|
2958
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
2959
|
+
switch (_b.label) {
|
|
2803
2960
|
case 0: return [4 /*yield*/, this.getCurrentSchema()];
|
|
2804
2961
|
case 1:
|
|
2805
|
-
currentSchema =
|
|
2962
|
+
currentSchema = _b.sent();
|
|
2806
2963
|
_a = this.driver.parseTableName(view), schema = _a.schema, name = _a.tableName;
|
|
2807
2964
|
if (!schema) {
|
|
2808
2965
|
schema = currentSchema;
|
|
2809
2966
|
}
|
|
2810
|
-
type = view.materialized ?
|
|
2811
|
-
|
|
2812
|
-
_b = (0, tslib_1.__read)(qb.delete()
|
|
2813
|
-
.from(this.getTypeormMetadataTableName())
|
|
2814
|
-
.where(qb.escape("type") + " = :type", { type: type })
|
|
2815
|
-
.andWhere(qb.escape("schema") + " = :schema", { schema: schema })
|
|
2816
|
-
.andWhere(qb.escape("name") + " = :name", { name: name })
|
|
2817
|
-
.getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
|
|
2818
|
-
return [2 /*return*/, new Query_1.Query(query, parameters)];
|
|
2967
|
+
type = view.materialized ? MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW : MetadataTableType_1.MetadataTableType.VIEW;
|
|
2968
|
+
return [2 /*return*/, this.deleteTypeormMetadataSql({ type: type, schema: schema, name: name })];
|
|
2819
2969
|
}
|
|
2820
2970
|
});
|
|
2821
2971
|
});
|
|
@@ -3066,6 +3216,28 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
3066
3216
|
}
|
|
3067
3217
|
return "\"" + tableName + "\"";
|
|
3068
3218
|
};
|
|
3219
|
+
/**
|
|
3220
|
+
* Get the table name with table schema
|
|
3221
|
+
* Note: Without ' or "
|
|
3222
|
+
*/
|
|
3223
|
+
PostgresQueryRunner.prototype.getTableNameWithSchema = function (target) {
|
|
3224
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
3225
|
+
var tableName, schemaResult, schema;
|
|
3226
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
3227
|
+
switch (_a.label) {
|
|
3228
|
+
case 0:
|
|
3229
|
+
tableName = target instanceof Table_1.Table ? target.name : target;
|
|
3230
|
+
if (!(tableName.indexOf(".") === -1)) return [3 /*break*/, 2];
|
|
3231
|
+
return [4 /*yield*/, this.query("SELECT current_schema()")];
|
|
3232
|
+
case 1:
|
|
3233
|
+
schemaResult = _a.sent();
|
|
3234
|
+
schema = schemaResult[0]["current_schema"];
|
|
3235
|
+
return [2 /*return*/, schema + "." + tableName];
|
|
3236
|
+
case 2: return [2 /*return*/, tableName.split(".")[0] + "." + tableName.split(".")[1]];
|
|
3237
|
+
}
|
|
3238
|
+
});
|
|
3239
|
+
});
|
|
3240
|
+
};
|
|
3069
3241
|
/**
|
|
3070
3242
|
* Builds a query for create column.
|
|
3071
3243
|
*/
|
|
@@ -3092,16 +3264,23 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
3092
3264
|
else if (!column.isGenerated || column.type === "uuid") {
|
|
3093
3265
|
c += " " + this.connection.driver.createFullType(column);
|
|
3094
3266
|
}
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
if (column.
|
|
3098
|
-
c += "
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3267
|
+
// CHARACTER SET, COLLATE, NOT NULL and DEFAULT do not exist on generated (virtual) columns
|
|
3268
|
+
// Also, postgres only supports the stored generated column type
|
|
3269
|
+
if (column.generatedType === "STORED" && column.asExpression) {
|
|
3270
|
+
c += " GENERATED ALWAYS AS (" + column.asExpression + ") STORED";
|
|
3271
|
+
}
|
|
3272
|
+
else {
|
|
3273
|
+
if (column.charset)
|
|
3274
|
+
c += " CHARACTER SET \"" + column.charset + "\"";
|
|
3275
|
+
if (column.collation)
|
|
3276
|
+
c += " COLLATE \"" + column.collation + "\"";
|
|
3277
|
+
if (column.isNullable !== true)
|
|
3278
|
+
c += " NOT NULL";
|
|
3279
|
+
if (column.default !== undefined && column.default !== null)
|
|
3280
|
+
c += " DEFAULT " + column.default;
|
|
3281
|
+
if (column.isGenerated && column.generationStrategy === "uuid" && !column.default)
|
|
3282
|
+
c += " DEFAULT " + this.driver.uuidGenerator;
|
|
3283
|
+
}
|
|
3105
3284
|
return c;
|
|
3106
3285
|
};
|
|
3107
3286
|
/**
|