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
|
@@ -18,6 +18,7 @@ import { Query } from "../Query";
|
|
|
18
18
|
import { VersionUtils } from "../../util/VersionUtils";
|
|
19
19
|
import { TypeORMError } from "../../error";
|
|
20
20
|
import { QueryResult } from "../../query-runner/QueryResult";
|
|
21
|
+
import { MetadataTableType } from "../types/MetadataTableType";
|
|
21
22
|
/**
|
|
22
23
|
* Runs queries on a single postgres database connection.
|
|
23
24
|
*/
|
|
@@ -219,23 +220,25 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
219
220
|
if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)
|
|
220
221
|
this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
|
|
221
222
|
result = new QueryResult();
|
|
222
|
-
if (raw
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
223
|
+
if (raw) {
|
|
224
|
+
if (raw.hasOwnProperty('rows')) {
|
|
225
|
+
result.records = raw.rows;
|
|
226
|
+
}
|
|
227
|
+
if (raw.hasOwnProperty('rowCount')) {
|
|
228
|
+
result.affected = raw.rowCount;
|
|
229
|
+
}
|
|
230
|
+
switch (raw.command) {
|
|
231
|
+
case "DELETE":
|
|
232
|
+
case "UPDATE":
|
|
233
|
+
// for UPDATE and DELETE query additionally return number of affected rows
|
|
234
|
+
result.raw = [raw.rows, raw.rowCount];
|
|
235
|
+
break;
|
|
236
|
+
default:
|
|
237
|
+
result.raw = raw.rows;
|
|
238
|
+
}
|
|
239
|
+
if (!useStructuredResult) {
|
|
240
|
+
return [2 /*return*/, result.raw];
|
|
241
|
+
}
|
|
239
242
|
}
|
|
240
243
|
return [2 /*return*/, result];
|
|
241
244
|
case 4:
|
|
@@ -506,35 +509,35 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
506
509
|
if (createForeignKeys === void 0) { createForeignKeys = true; }
|
|
507
510
|
if (createIndices === void 0) { createIndices = true; }
|
|
508
511
|
return __awaiter(this, void 0, void 0, function () {
|
|
509
|
-
var isTableExist, upQueries, downQueries, enumColumns, createdEnumTypes, enumColumns_1, enumColumns_1_1, column, hasEnum, enumName, e_1_1;
|
|
510
|
-
var e_1, _a;
|
|
512
|
+
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;
|
|
513
|
+
var e_1, _a, e_2, _b;
|
|
511
514
|
var _this = this;
|
|
512
|
-
return __generator(this, function (
|
|
513
|
-
switch (
|
|
515
|
+
return __generator(this, function (_c) {
|
|
516
|
+
switch (_c.label) {
|
|
514
517
|
case 0:
|
|
515
518
|
if (!ifNotExist) return [3 /*break*/, 2];
|
|
516
519
|
return [4 /*yield*/, this.hasTable(table)];
|
|
517
520
|
case 1:
|
|
518
|
-
isTableExist =
|
|
521
|
+
isTableExist = _c.sent();
|
|
519
522
|
if (isTableExist)
|
|
520
523
|
return [2 /*return*/, Promise.resolve()];
|
|
521
|
-
|
|
524
|
+
_c.label = 2;
|
|
522
525
|
case 2:
|
|
523
526
|
upQueries = [];
|
|
524
527
|
downQueries = [];
|
|
525
528
|
enumColumns = table.columns.filter(function (column) { return column.type === "enum" || column.type === "simple-enum"; });
|
|
526
529
|
createdEnumTypes = [];
|
|
527
|
-
|
|
530
|
+
_c.label = 3;
|
|
528
531
|
case 3:
|
|
529
|
-
|
|
532
|
+
_c.trys.push([3, 8, 9, 10]);
|
|
530
533
|
enumColumns_1 = __values(enumColumns), enumColumns_1_1 = enumColumns_1.next();
|
|
531
|
-
|
|
534
|
+
_c.label = 4;
|
|
532
535
|
case 4:
|
|
533
536
|
if (!!enumColumns_1_1.done) return [3 /*break*/, 7];
|
|
534
537
|
column = enumColumns_1_1.value;
|
|
535
538
|
return [4 /*yield*/, this.hasEnumType(table, column)];
|
|
536
539
|
case 5:
|
|
537
|
-
hasEnum =
|
|
540
|
+
hasEnum = _c.sent();
|
|
538
541
|
enumName = this.buildEnumName(table, column);
|
|
539
542
|
// if enum with the same "enumName" is defined more then once, me must prevent double creation
|
|
540
543
|
if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) {
|
|
@@ -542,13 +545,13 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
542
545
|
upQueries.push(this.createEnumTypeSql(table, column, enumName));
|
|
543
546
|
downQueries.push(this.dropEnumTypeSql(table, column, enumName));
|
|
544
547
|
}
|
|
545
|
-
|
|
548
|
+
_c.label = 6;
|
|
546
549
|
case 6:
|
|
547
550
|
enumColumns_1_1 = enumColumns_1.next();
|
|
548
551
|
return [3 /*break*/, 4];
|
|
549
552
|
case 7: return [3 /*break*/, 10];
|
|
550
553
|
case 8:
|
|
551
|
-
e_1_1 =
|
|
554
|
+
e_1_1 = _c.sent();
|
|
552
555
|
e_1 = { error: e_1_1 };
|
|
553
556
|
return [3 /*break*/, 10];
|
|
554
557
|
case 9:
|
|
@@ -558,6 +561,54 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
558
561
|
finally { if (e_1) throw e_1.error; }
|
|
559
562
|
return [7 /*endfinally*/];
|
|
560
563
|
case 10:
|
|
564
|
+
generatedColumns = table.columns.filter(function (column) { return column.generatedType === "STORED" && column.asExpression; });
|
|
565
|
+
_c.label = 11;
|
|
566
|
+
case 11:
|
|
567
|
+
_c.trys.push([11, 16, 17, 18]);
|
|
568
|
+
generatedColumns_1 = __values(generatedColumns), generatedColumns_1_1 = generatedColumns_1.next();
|
|
569
|
+
_c.label = 12;
|
|
570
|
+
case 12:
|
|
571
|
+
if (!!generatedColumns_1_1.done) return [3 /*break*/, 15];
|
|
572
|
+
column = generatedColumns_1_1.value;
|
|
573
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
574
|
+
case 13:
|
|
575
|
+
tableNameWithSchema = (_c.sent()).split('.');
|
|
576
|
+
tableName = tableNameWithSchema[1];
|
|
577
|
+
schema = tableNameWithSchema[0];
|
|
578
|
+
insertQuery = this.insertTypeormMetadataSql({
|
|
579
|
+
database: this.driver.database,
|
|
580
|
+
schema: schema,
|
|
581
|
+
table: tableName,
|
|
582
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
583
|
+
name: column.name,
|
|
584
|
+
value: column.asExpression
|
|
585
|
+
});
|
|
586
|
+
deleteQuery = this.deleteTypeormMetadataSql({
|
|
587
|
+
database: this.driver.database,
|
|
588
|
+
schema: schema,
|
|
589
|
+
table: tableName,
|
|
590
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
591
|
+
name: column.name
|
|
592
|
+
});
|
|
593
|
+
upQueries.push(deleteQuery);
|
|
594
|
+
upQueries.push(insertQuery);
|
|
595
|
+
downQueries.push(deleteQuery);
|
|
596
|
+
_c.label = 14;
|
|
597
|
+
case 14:
|
|
598
|
+
generatedColumns_1_1 = generatedColumns_1.next();
|
|
599
|
+
return [3 /*break*/, 12];
|
|
600
|
+
case 15: return [3 /*break*/, 18];
|
|
601
|
+
case 16:
|
|
602
|
+
e_2_1 = _c.sent();
|
|
603
|
+
e_2 = { error: e_2_1 };
|
|
604
|
+
return [3 /*break*/, 18];
|
|
605
|
+
case 17:
|
|
606
|
+
try {
|
|
607
|
+
if (generatedColumns_1_1 && !generatedColumns_1_1.done && (_b = generatedColumns_1.return)) _b.call(generatedColumns_1);
|
|
608
|
+
}
|
|
609
|
+
finally { if (e_2) throw e_2.error; }
|
|
610
|
+
return [7 /*endfinally*/];
|
|
611
|
+
case 18:
|
|
561
612
|
upQueries.push(this.createTableSql(table, createForeignKeys));
|
|
562
613
|
downQueries.push(this.dropTableSql(table));
|
|
563
614
|
// if createForeignKeys is true, we must drop created foreign keys in down query.
|
|
@@ -574,8 +625,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
574
625
|
});
|
|
575
626
|
}
|
|
576
627
|
return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
577
|
-
case
|
|
578
|
-
|
|
628
|
+
case 19:
|
|
629
|
+
_c.sent();
|
|
579
630
|
return [2 /*return*/];
|
|
580
631
|
}
|
|
581
632
|
});
|
|
@@ -693,8 +744,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
693
744
|
*/
|
|
694
745
|
PostgresQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {
|
|
695
746
|
return __awaiter(this, void 0, void 0, function () {
|
|
696
|
-
var upQueries, downQueries, oldTable, _a, newTable, _b, schemaName, oldTableName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType,
|
|
697
|
-
var
|
|
747
|
+
var upQueries, downQueries, oldTable, _a, newTable, _b, schemaName, oldTableName, columnNames, oldPkName, newPkName, enumColumns, enumColumns_2, enumColumns_2_1, column, oldEnumType, e_3_1;
|
|
748
|
+
var e_3, _c;
|
|
698
749
|
var _this = this;
|
|
699
750
|
return __generator(this, function (_d) {
|
|
700
751
|
switch (_d.label) {
|
|
@@ -792,14 +843,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
792
843
|
return [3 /*break*/, 5];
|
|
793
844
|
case 8: return [3 /*break*/, 11];
|
|
794
845
|
case 9:
|
|
795
|
-
|
|
796
|
-
|
|
846
|
+
e_3_1 = _d.sent();
|
|
847
|
+
e_3 = { error: e_3_1 };
|
|
797
848
|
return [3 /*break*/, 11];
|
|
798
849
|
case 10:
|
|
799
850
|
try {
|
|
800
851
|
if (enumColumns_2_1 && !enumColumns_2_1.done && (_c = enumColumns_2.return)) _c.call(enumColumns_2);
|
|
801
852
|
}
|
|
802
|
-
finally { if (
|
|
853
|
+
finally { if (e_3) throw e_3.error; }
|
|
803
854
|
return [7 /*endfinally*/];
|
|
804
855
|
case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
805
856
|
case 12:
|
|
@@ -814,7 +865,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
814
865
|
*/
|
|
815
866
|
PostgresQueryRunner.prototype.addColumn = function (tableOrName, column) {
|
|
816
867
|
return __awaiter(this, void 0, void 0, function () {
|
|
817
|
-
var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint;
|
|
868
|
+
var table, _a, clonedTable, upQueries, downQueries, hasEnum, primaryColumns, pkName_1, columnNames_1, pkName, columnNames, columnIndex, uniqueConstraint, tableNameWithSchema, tableName, schema, insertQuery, deleteQuery;
|
|
818
869
|
return __generator(this, function (_b) {
|
|
819
870
|
switch (_b.label) {
|
|
820
871
|
case 0:
|
|
@@ -873,13 +924,39 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
873
924
|
upQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (\"" + column.name + "\")"));
|
|
874
925
|
downQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueConstraint.name + "\""));
|
|
875
926
|
}
|
|
927
|
+
if (!(column.generatedType === "STORED" && column.asExpression)) return [3 /*break*/, 7];
|
|
928
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
929
|
+
case 6:
|
|
930
|
+
tableNameWithSchema = (_b.sent()).split('.');
|
|
931
|
+
tableName = tableNameWithSchema[1];
|
|
932
|
+
schema = tableNameWithSchema[0];
|
|
933
|
+
insertQuery = this.insertTypeormMetadataSql({
|
|
934
|
+
database: this.driver.database,
|
|
935
|
+
schema: schema,
|
|
936
|
+
table: tableName,
|
|
937
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
938
|
+
name: column.name,
|
|
939
|
+
value: column.asExpression
|
|
940
|
+
});
|
|
941
|
+
deleteQuery = this.deleteTypeormMetadataSql({
|
|
942
|
+
database: this.driver.database,
|
|
943
|
+
schema: schema,
|
|
944
|
+
table: tableName,
|
|
945
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
946
|
+
name: column.name
|
|
947
|
+
});
|
|
948
|
+
upQueries.push(deleteQuery);
|
|
949
|
+
upQueries.push(insertQuery);
|
|
950
|
+
downQueries.push(deleteQuery);
|
|
951
|
+
_b.label = 7;
|
|
952
|
+
case 7:
|
|
876
953
|
// create column's comment
|
|
877
954
|
if (column.comment) {
|
|
878
955
|
upQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
|
|
879
956
|
downQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
|
|
880
957
|
}
|
|
881
958
|
return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
882
|
-
case
|
|
959
|
+
case 8:
|
|
883
960
|
_b.sent();
|
|
884
961
|
clonedTable.addColumn(column);
|
|
885
962
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -893,8 +970,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
893
970
|
*/
|
|
894
971
|
PostgresQueryRunner.prototype.addColumns = function (tableOrName, columns) {
|
|
895
972
|
return __awaiter(this, void 0, void 0, function () {
|
|
896
|
-
var columns_1, columns_1_1, column,
|
|
897
|
-
var
|
|
973
|
+
var columns_1, columns_1_1, column, e_4_1;
|
|
974
|
+
var e_4, _a;
|
|
898
975
|
return __generator(this, function (_b) {
|
|
899
976
|
switch (_b.label) {
|
|
900
977
|
case 0:
|
|
@@ -913,14 +990,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
913
990
|
return [3 /*break*/, 1];
|
|
914
991
|
case 4: return [3 /*break*/, 7];
|
|
915
992
|
case 5:
|
|
916
|
-
|
|
917
|
-
|
|
993
|
+
e_4_1 = _b.sent();
|
|
994
|
+
e_4 = { error: e_4_1 };
|
|
918
995
|
return [3 /*break*/, 7];
|
|
919
996
|
case 6:
|
|
920
997
|
try {
|
|
921
998
|
if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
|
|
922
999
|
}
|
|
923
|
-
finally { if (
|
|
1000
|
+
finally { if (e_4) throw e_4.error; }
|
|
924
1001
|
return [7 /*endfinally*/];
|
|
925
1002
|
case 7: return [2 /*return*/];
|
|
926
1003
|
}
|
|
@@ -965,7 +1042,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
965
1042
|
*/
|
|
966
1043
|
PostgresQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {
|
|
967
1044
|
return __awaiter(this, void 0, void 0, function () {
|
|
968
|
-
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;
|
|
1045
|
+
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;
|
|
969
1046
|
var _this = this;
|
|
970
1047
|
return __generator(this, function (_b) {
|
|
971
1048
|
switch (_b.label) {
|
|
@@ -988,7 +1065,11 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
988
1065
|
: table.columns.find(function (column) { return column.name === oldTableColumnOrName; });
|
|
989
1066
|
if (!oldColumn)
|
|
990
1067
|
throw new TypeORMError("Column \"" + oldTableColumnOrName + "\" was not found in the \"" + table.name + "\" table.");
|
|
991
|
-
if (!(oldColumn.type !== newColumn.type
|
|
1068
|
+
if (!(oldColumn.type !== newColumn.type
|
|
1069
|
+
|| oldColumn.length !== newColumn.length
|
|
1070
|
+
|| newColumn.isArray !== oldColumn.isArray
|
|
1071
|
+
|| (!oldColumn.generatedType && newColumn.generatedType === "STORED")
|
|
1072
|
+
|| (oldColumn.asExpression !== newColumn.asExpression && newColumn.generatedType === "STORED"))) return [3 /*break*/, 6];
|
|
992
1073
|
// To avoid data conversion, we just recreate column
|
|
993
1074
|
return [4 /*yield*/, this.dropColumn(table, oldColumn)];
|
|
994
1075
|
case 4:
|
|
@@ -999,7 +1080,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
999
1080
|
_b.sent();
|
|
1000
1081
|
// update cloned table
|
|
1001
1082
|
clonedTable = table.clone();
|
|
1002
|
-
return [3 /*break*/,
|
|
1083
|
+
return [3 /*break*/, 11];
|
|
1003
1084
|
case 6:
|
|
1004
1085
|
if (!(oldColumn.name !== newColumn.name)) return [3 /*break*/, 9];
|
|
1005
1086
|
// rename column
|
|
@@ -1221,9 +1302,45 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1221
1302
|
upQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(newColumn)));
|
|
1222
1303
|
downQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " ALTER COLUMN \"" + newColumn.name + "\" TYPE " + this.driver.createFullType(oldColumn)));
|
|
1223
1304
|
}
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1305
|
+
if (!(newColumn.generatedType !== oldColumn.generatedType)) return [3 /*break*/, 11];
|
|
1306
|
+
if (!(!newColumn.generatedType || newColumn.generatedType === "VIRTUAL")) return [3 /*break*/, 11];
|
|
1307
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
1308
|
+
case 10:
|
|
1309
|
+
tableNameWithSchema = (_b.sent()).split('.');
|
|
1310
|
+
tableName = tableNameWithSchema[1];
|
|
1311
|
+
schema = tableNameWithSchema[0];
|
|
1312
|
+
upQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " RENAME COLUMN \"" + oldColumn.name + "\" TO \"TEMP_OLD_" + oldColumn.name + "\""));
|
|
1313
|
+
upQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " ADD " + this.buildCreateColumnSql(table, newColumn)));
|
|
1314
|
+
upQueries.push(new Query("UPDATE " + this.escapePath(table) + " SET \"" + newColumn.name + "\" = \"TEMP_OLD_" + oldColumn.name + "\""));
|
|
1315
|
+
upQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " DROP COLUMN \"TEMP_OLD_" + oldColumn.name + "\""));
|
|
1316
|
+
upQueries.push(this.deleteTypeormMetadataSql({
|
|
1317
|
+
database: this.driver.database,
|
|
1318
|
+
schema: schema,
|
|
1319
|
+
table: tableName,
|
|
1320
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1321
|
+
name: oldColumn.name
|
|
1322
|
+
}));
|
|
1323
|
+
// However, we can't copy it back on downgrade. It needs to regenerate.
|
|
1324
|
+
downQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " DROP COLUMN \"" + newColumn.name + "\""));
|
|
1325
|
+
downQueries.push(new Query("ALTER TABLE " + this.escapePath(table) + " ADD " + this.buildCreateColumnSql(table, oldColumn)));
|
|
1326
|
+
downQueries.push(this.deleteTypeormMetadataSql({
|
|
1327
|
+
database: this.driver.database,
|
|
1328
|
+
schema: schema,
|
|
1329
|
+
table: tableName,
|
|
1330
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1331
|
+
name: newColumn.name
|
|
1332
|
+
}));
|
|
1333
|
+
downQueries.push(this.insertTypeormMetadataSql({
|
|
1334
|
+
database: this.driver.database,
|
|
1335
|
+
schema: schema,
|
|
1336
|
+
table: tableName,
|
|
1337
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1338
|
+
name: oldColumn.name,
|
|
1339
|
+
value: oldColumn.asExpression
|
|
1340
|
+
}));
|
|
1341
|
+
_b.label = 11;
|
|
1342
|
+
case 11: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
1343
|
+
case 12:
|
|
1227
1344
|
_b.sent();
|
|
1228
1345
|
this.replaceCachedTable(table, clonedTable);
|
|
1229
1346
|
return [2 /*return*/];
|
|
@@ -1236,8 +1353,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1236
1353
|
*/
|
|
1237
1354
|
PostgresQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {
|
|
1238
1355
|
return __awaiter(this, void 0, void 0, function () {
|
|
1239
|
-
var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn,
|
|
1240
|
-
var
|
|
1356
|
+
var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn, e_5_1;
|
|
1357
|
+
var e_5, _b;
|
|
1241
1358
|
return __generator(this, function (_c) {
|
|
1242
1359
|
switch (_c.label) {
|
|
1243
1360
|
case 0:
|
|
@@ -1256,14 +1373,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1256
1373
|
return [3 /*break*/, 1];
|
|
1257
1374
|
case 4: return [3 /*break*/, 7];
|
|
1258
1375
|
case 5:
|
|
1259
|
-
|
|
1260
|
-
|
|
1376
|
+
e_5_1 = _c.sent();
|
|
1377
|
+
e_5 = { error: e_5_1 };
|
|
1261
1378
|
return [3 /*break*/, 7];
|
|
1262
1379
|
case 6:
|
|
1263
1380
|
try {
|
|
1264
1381
|
if (changedColumns_1_1 && !changedColumns_1_1.done && (_b = changedColumns_1.return)) _b.call(changedColumns_1);
|
|
1265
1382
|
}
|
|
1266
|
-
finally { if (
|
|
1383
|
+
finally { if (e_5) throw e_5.error; }
|
|
1267
1384
|
return [7 /*endfinally*/];
|
|
1268
1385
|
case 7: return [2 /*return*/];
|
|
1269
1386
|
}
|
|
@@ -1275,7 +1392,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1275
1392
|
*/
|
|
1276
1393
|
PostgresQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {
|
|
1277
1394
|
return __awaiter(this, void 0, void 0, function () {
|
|
1278
|
-
var table, _a, column, clonedTable, upQueries, downQueries, pkName, columnNames, tableColumn, pkName_2, columnNames_2, columnIndex, columnCheck, columnUnique, hasEnum, enumType, escapedEnumName;
|
|
1395
|
+
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;
|
|
1279
1396
|
return __generator(this, function (_b) {
|
|
1280
1397
|
switch (_b.label) {
|
|
1281
1398
|
case 0:
|
|
@@ -1342,8 +1459,33 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1342
1459
|
upQueries.push(this.dropEnumTypeSql(table, column, escapedEnumName));
|
|
1343
1460
|
downQueries.push(this.createEnumTypeSql(table, column, escapedEnumName));
|
|
1344
1461
|
_b.label = 6;
|
|
1345
|
-
case 6:
|
|
1462
|
+
case 6:
|
|
1463
|
+
if (!(column.generatedType === "STORED")) return [3 /*break*/, 8];
|
|
1464
|
+
return [4 /*yield*/, this.getTableNameWithSchema(table.name)];
|
|
1346
1465
|
case 7:
|
|
1466
|
+
tableNameWithSchema = (_b.sent()).split('.');
|
|
1467
|
+
tableName = tableNameWithSchema[1];
|
|
1468
|
+
schema = tableNameWithSchema[0];
|
|
1469
|
+
insertQuery = this.deleteTypeormMetadataSql({
|
|
1470
|
+
database: this.driver.database,
|
|
1471
|
+
schema: schema,
|
|
1472
|
+
table: tableName,
|
|
1473
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1474
|
+
name: column.name
|
|
1475
|
+
});
|
|
1476
|
+
deleteQuery = this.insertTypeormMetadataSql({
|
|
1477
|
+
database: this.driver.database,
|
|
1478
|
+
schema: schema,
|
|
1479
|
+
table: tableName,
|
|
1480
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1481
|
+
name: column.name,
|
|
1482
|
+
value: column.asExpression
|
|
1483
|
+
});
|
|
1484
|
+
upQueries.push(insertQuery);
|
|
1485
|
+
downQueries.push(deleteQuery);
|
|
1486
|
+
_b.label = 8;
|
|
1487
|
+
case 8: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
|
|
1488
|
+
case 9:
|
|
1347
1489
|
_b.sent();
|
|
1348
1490
|
clonedTable.removeColumn(column);
|
|
1349
1491
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -1357,8 +1499,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1357
1499
|
*/
|
|
1358
1500
|
PostgresQueryRunner.prototype.dropColumns = function (tableOrName, columns) {
|
|
1359
1501
|
return __awaiter(this, void 0, void 0, function () {
|
|
1360
|
-
var columns_2, columns_2_1, column,
|
|
1361
|
-
var
|
|
1502
|
+
var columns_2, columns_2_1, column, e_6_1;
|
|
1503
|
+
var e_6, _a;
|
|
1362
1504
|
return __generator(this, function (_b) {
|
|
1363
1505
|
switch (_b.label) {
|
|
1364
1506
|
case 0:
|
|
@@ -1377,14 +1519,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1377
1519
|
return [3 /*break*/, 1];
|
|
1378
1520
|
case 4: return [3 /*break*/, 7];
|
|
1379
1521
|
case 5:
|
|
1380
|
-
|
|
1381
|
-
|
|
1522
|
+
e_6_1 = _b.sent();
|
|
1523
|
+
e_6 = { error: e_6_1 };
|
|
1382
1524
|
return [3 /*break*/, 7];
|
|
1383
1525
|
case 6:
|
|
1384
1526
|
try {
|
|
1385
1527
|
if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
|
|
1386
1528
|
}
|
|
1387
|
-
finally { if (
|
|
1529
|
+
finally { if (e_6) throw e_6.error; }
|
|
1388
1530
|
return [7 /*endfinally*/];
|
|
1389
1531
|
case 7: return [2 /*return*/];
|
|
1390
1532
|
}
|
|
@@ -1540,8 +1682,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1540
1682
|
*/
|
|
1541
1683
|
PostgresQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {
|
|
1542
1684
|
return __awaiter(this, void 0, void 0, function () {
|
|
1543
|
-
var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint,
|
|
1544
|
-
var
|
|
1685
|
+
var uniqueConstraints_1, uniqueConstraints_1_1, uniqueConstraint, e_7_1;
|
|
1686
|
+
var e_7, _a;
|
|
1545
1687
|
return __generator(this, function (_b) {
|
|
1546
1688
|
switch (_b.label) {
|
|
1547
1689
|
case 0:
|
|
@@ -1560,14 +1702,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1560
1702
|
return [3 /*break*/, 1];
|
|
1561
1703
|
case 4: return [3 /*break*/, 7];
|
|
1562
1704
|
case 5:
|
|
1563
|
-
|
|
1564
|
-
|
|
1705
|
+
e_7_1 = _b.sent();
|
|
1706
|
+
e_7 = { error: e_7_1 };
|
|
1565
1707
|
return [3 /*break*/, 7];
|
|
1566
1708
|
case 6:
|
|
1567
1709
|
try {
|
|
1568
1710
|
if (uniqueConstraints_1_1 && !uniqueConstraints_1_1.done && (_a = uniqueConstraints_1.return)) _a.call(uniqueConstraints_1);
|
|
1569
1711
|
}
|
|
1570
|
-
finally { if (
|
|
1712
|
+
finally { if (e_7) throw e_7.error; }
|
|
1571
1713
|
return [7 /*endfinally*/];
|
|
1572
1714
|
case 7: return [2 /*return*/];
|
|
1573
1715
|
}
|
|
@@ -1611,8 +1753,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1611
1753
|
*/
|
|
1612
1754
|
PostgresQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {
|
|
1613
1755
|
return __awaiter(this, void 0, void 0, function () {
|
|
1614
|
-
var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint,
|
|
1615
|
-
var
|
|
1756
|
+
var uniqueConstraints_2, uniqueConstraints_2_1, uniqueConstraint, e_8_1;
|
|
1757
|
+
var e_8, _a;
|
|
1616
1758
|
return __generator(this, function (_b) {
|
|
1617
1759
|
switch (_b.label) {
|
|
1618
1760
|
case 0:
|
|
@@ -1631,14 +1773,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1631
1773
|
return [3 /*break*/, 1];
|
|
1632
1774
|
case 4: return [3 /*break*/, 7];
|
|
1633
1775
|
case 5:
|
|
1634
|
-
|
|
1635
|
-
|
|
1776
|
+
e_8_1 = _b.sent();
|
|
1777
|
+
e_8 = { error: e_8_1 };
|
|
1636
1778
|
return [3 /*break*/, 7];
|
|
1637
1779
|
case 6:
|
|
1638
1780
|
try {
|
|
1639
1781
|
if (uniqueConstraints_2_1 && !uniqueConstraints_2_1.done && (_a = uniqueConstraints_2.return)) _a.call(uniqueConstraints_2);
|
|
1640
1782
|
}
|
|
1641
|
-
finally { if (
|
|
1783
|
+
finally { if (e_8) throw e_8.error; }
|
|
1642
1784
|
return [7 /*endfinally*/];
|
|
1643
1785
|
case 7: return [2 /*return*/];
|
|
1644
1786
|
}
|
|
@@ -1886,8 +2028,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1886
2028
|
*/
|
|
1887
2029
|
PostgresQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {
|
|
1888
2030
|
return __awaiter(this, void 0, void 0, function () {
|
|
1889
|
-
var foreignKeys_1, foreignKeys_1_1, foreignKey,
|
|
1890
|
-
var
|
|
2031
|
+
var foreignKeys_1, foreignKeys_1_1, foreignKey, e_9_1;
|
|
2032
|
+
var e_9, _a;
|
|
1891
2033
|
return __generator(this, function (_b) {
|
|
1892
2034
|
switch (_b.label) {
|
|
1893
2035
|
case 0:
|
|
@@ -1906,14 +2048,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1906
2048
|
return [3 /*break*/, 1];
|
|
1907
2049
|
case 4: return [3 /*break*/, 7];
|
|
1908
2050
|
case 5:
|
|
1909
|
-
|
|
1910
|
-
|
|
2051
|
+
e_9_1 = _b.sent();
|
|
2052
|
+
e_9 = { error: e_9_1 };
|
|
1911
2053
|
return [3 /*break*/, 7];
|
|
1912
2054
|
case 6:
|
|
1913
2055
|
try {
|
|
1914
2056
|
if (foreignKeys_1_1 && !foreignKeys_1_1.done && (_a = foreignKeys_1.return)) _a.call(foreignKeys_1);
|
|
1915
2057
|
}
|
|
1916
|
-
finally { if (
|
|
2058
|
+
finally { if (e_9) throw e_9.error; }
|
|
1917
2059
|
return [7 /*endfinally*/];
|
|
1918
2060
|
case 7: return [2 /*return*/];
|
|
1919
2061
|
}
|
|
@@ -1957,8 +2099,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1957
2099
|
*/
|
|
1958
2100
|
PostgresQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {
|
|
1959
2101
|
return __awaiter(this, void 0, void 0, function () {
|
|
1960
|
-
var foreignKeys_2, foreignKeys_2_1, foreignKey,
|
|
1961
|
-
var
|
|
2102
|
+
var foreignKeys_2, foreignKeys_2_1, foreignKey, e_10_1;
|
|
2103
|
+
var e_10, _a;
|
|
1962
2104
|
return __generator(this, function (_b) {
|
|
1963
2105
|
switch (_b.label) {
|
|
1964
2106
|
case 0:
|
|
@@ -1977,14 +2119,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
1977
2119
|
return [3 /*break*/, 1];
|
|
1978
2120
|
case 4: return [3 /*break*/, 7];
|
|
1979
2121
|
case 5:
|
|
1980
|
-
|
|
1981
|
-
|
|
2122
|
+
e_10_1 = _b.sent();
|
|
2123
|
+
e_10 = { error: e_10_1 };
|
|
1982
2124
|
return [3 /*break*/, 7];
|
|
1983
2125
|
case 6:
|
|
1984
2126
|
try {
|
|
1985
2127
|
if (foreignKeys_2_1 && !foreignKeys_2_1.done && (_a = foreignKeys_2.return)) _a.call(foreignKeys_2);
|
|
1986
2128
|
}
|
|
1987
|
-
finally { if (
|
|
2129
|
+
finally { if (e_10) throw e_10.error; }
|
|
1988
2130
|
return [7 /*endfinally*/];
|
|
1989
2131
|
case 7: return [2 /*return*/];
|
|
1990
2132
|
}
|
|
@@ -2028,8 +2170,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2028
2170
|
*/
|
|
2029
2171
|
PostgresQueryRunner.prototype.createIndices = function (tableOrName, indices) {
|
|
2030
2172
|
return __awaiter(this, void 0, void 0, function () {
|
|
2031
|
-
var indices_1, indices_1_1, index,
|
|
2032
|
-
var
|
|
2173
|
+
var indices_1, indices_1_1, index, e_11_1;
|
|
2174
|
+
var e_11, _a;
|
|
2033
2175
|
return __generator(this, function (_b) {
|
|
2034
2176
|
switch (_b.label) {
|
|
2035
2177
|
case 0:
|
|
@@ -2048,14 +2190,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2048
2190
|
return [3 /*break*/, 1];
|
|
2049
2191
|
case 4: return [3 /*break*/, 7];
|
|
2050
2192
|
case 5:
|
|
2051
|
-
|
|
2052
|
-
|
|
2193
|
+
e_11_1 = _b.sent();
|
|
2194
|
+
e_11 = { error: e_11_1 };
|
|
2053
2195
|
return [3 /*break*/, 7];
|
|
2054
2196
|
case 6:
|
|
2055
2197
|
try {
|
|
2056
2198
|
if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1);
|
|
2057
2199
|
}
|
|
2058
|
-
finally { if (
|
|
2200
|
+
finally { if (e_11) throw e_11.error; }
|
|
2059
2201
|
return [7 /*endfinally*/];
|
|
2060
2202
|
case 7: return [2 /*return*/];
|
|
2061
2203
|
}
|
|
@@ -2099,8 +2241,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2099
2241
|
*/
|
|
2100
2242
|
PostgresQueryRunner.prototype.dropIndices = function (tableOrName, indices) {
|
|
2101
2243
|
return __awaiter(this, void 0, void 0, function () {
|
|
2102
|
-
var indices_2, indices_2_1, index,
|
|
2103
|
-
var
|
|
2244
|
+
var indices_2, indices_2_1, index, e_12_1;
|
|
2245
|
+
var e_12, _a;
|
|
2104
2246
|
return __generator(this, function (_b) {
|
|
2105
2247
|
switch (_b.label) {
|
|
2106
2248
|
case 0:
|
|
@@ -2119,14 +2261,14 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2119
2261
|
return [3 /*break*/, 1];
|
|
2120
2262
|
case 4: return [3 /*break*/, 7];
|
|
2121
2263
|
case 5:
|
|
2122
|
-
|
|
2123
|
-
|
|
2264
|
+
e_12_1 = _b.sent();
|
|
2265
|
+
e_12 = { error: e_12_1 };
|
|
2124
2266
|
return [3 /*break*/, 7];
|
|
2125
2267
|
case 6:
|
|
2126
2268
|
try {
|
|
2127
2269
|
if (indices_2_1 && !indices_2_1.done && (_a = indices_2.return)) _a.call(indices_2);
|
|
2128
2270
|
}
|
|
2129
|
-
finally { if (
|
|
2271
|
+
finally { if (e_12) throw e_12.error; }
|
|
2130
2272
|
return [7 /*endfinally*/];
|
|
2131
2273
|
case 7: return [2 /*return*/];
|
|
2132
2274
|
}
|
|
@@ -2270,7 +2412,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2270
2412
|
query = "SELECT \"t\".* FROM " + this.escapePath(this.getTypeormMetadataTableName()) + " \"t\" " +
|
|
2271
2413
|
"INNER JOIN \"pg_catalog\".\"pg_class\" \"c\" ON \"c\".\"relname\" = \"t\".\"name\" " +
|
|
2272
2414
|
"INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"c\".\"relnamespace\" AND \"n\".\"nspname\" = \"t\".\"schema\" " +
|
|
2273
|
-
("WHERE \"t\".\"type\" IN ('VIEW', 'MATERIALIZED_VIEW') " + (viewsCondition ? "AND (" + viewsCondition + ")" : ""));
|
|
2415
|
+
("WHERE \"t\".\"type\" IN ('" + MetadataTableType.VIEW + "', '" + MetadataTableType.MATERIALIZED_VIEW + "') " + (viewsCondition ? "AND (" + viewsCondition + ")" : ""));
|
|
2274
2416
|
return [4 /*yield*/, this.query(query)];
|
|
2275
2417
|
case 4:
|
|
2276
2418
|
dbViews = _a.sent();
|
|
@@ -2281,7 +2423,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2281
2423
|
view.schema = dbView["schema"];
|
|
2282
2424
|
view.name = _this.driver.buildTableName(dbView["name"], schema);
|
|
2283
2425
|
view.expression = dbView["value"];
|
|
2284
|
-
view.materialized = dbView["type"] ===
|
|
2426
|
+
view.materialized = dbView["type"] === MetadataTableType.MATERIALIZED_VIEW;
|
|
2285
2427
|
return view;
|
|
2286
2428
|
})];
|
|
2287
2429
|
}
|
|
@@ -2432,7 +2574,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2432
2574
|
return [4 /*yield*/, Promise.all(dbColumns
|
|
2433
2575
|
.filter(function (dbColumn) { return (dbColumn["table_name"] === dbTable["table_name"] && dbColumn["table_schema"] === dbTable["table_schema"]); })
|
|
2434
2576
|
.map(function (dbColumn) { return __awaiter(_this, void 0, void 0, function () {
|
|
2435
|
-
var columnConstraints, tableColumn, name_1, builtEnumName, enumName, sql, results, type, geometryColumnSql, results, geographyColumnSql, results, length_1, match,
|
|
2577
|
+
var columnConstraints, tableColumn, name_1, builtEnumName, enumName, sql, results, type, geometryColumnSql, results, geographyColumnSql, results, length_1, match, uniqueConstraints, isConstraintComposite, serialDefaultName, serialDefaultPath, defaultWithoutQuotes, asExpressionQuery, results;
|
|
2436
2578
|
return __generator(this, function (_a) {
|
|
2437
2579
|
switch (_a.label) {
|
|
2438
2580
|
case 0:
|
|
@@ -2531,13 +2673,13 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2531
2673
|
}
|
|
2532
2674
|
tableColumn.isNullable = dbColumn["is_nullable"] === "YES";
|
|
2533
2675
|
tableColumn.isPrimary = !!columnConstraints.find(function (constraint) { return constraint["constraint_type"] === "PRIMARY"; });
|
|
2534
|
-
|
|
2535
|
-
isConstraintComposite = uniqueConstraint
|
|
2536
|
-
|
|
2676
|
+
uniqueConstraints = columnConstraints.filter(function (constraint) { return constraint["constraint_type"] === "UNIQUE"; });
|
|
2677
|
+
isConstraintComposite = uniqueConstraints.every(function (uniqueConstraint) {
|
|
2678
|
+
return dbConstraints.some(function (dbConstraint) { return dbConstraint["constraint_type"] === "UNIQUE"
|
|
2537
2679
|
&& dbConstraint["constraint_name"] === uniqueConstraint["constraint_name"]
|
|
2538
|
-
&& dbConstraint["column_name"] !== dbColumn["column_name"]; })
|
|
2539
|
-
|
|
2540
|
-
tableColumn.isUnique =
|
|
2680
|
+
&& dbConstraint["column_name"] !== dbColumn["column_name"]; });
|
|
2681
|
+
});
|
|
2682
|
+
tableColumn.isUnique = uniqueConstraints.length > 0 && !isConstraintComposite;
|
|
2541
2683
|
if (dbColumn.is_identity === "YES") { // Postgres 10+ Identity column
|
|
2542
2684
|
tableColumn.isGenerated = true;
|
|
2543
2685
|
tableColumn.generationStrategy = "identity";
|
|
@@ -2558,10 +2700,30 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2558
2700
|
tableColumn.default = dbColumn["column_default"];
|
|
2559
2701
|
}
|
|
2560
2702
|
else {
|
|
2561
|
-
tableColumn.default = dbColumn["column_default"].replace(/::[\w\s
|
|
2703
|
+
tableColumn.default = dbColumn["column_default"].replace(/::[\w\s\.\[\]\"]+/g, "");
|
|
2562
2704
|
tableColumn.default = tableColumn.default.replace(/^(-?\d+)$/, "'$1'");
|
|
2563
2705
|
}
|
|
2564
2706
|
}
|
|
2707
|
+
if (!(dbColumn["is_generated"] === "ALWAYS" && dbColumn["generation_expression"])) return [3 /*break*/, 9];
|
|
2708
|
+
// In postgres there is no VIRTUAL generated column type
|
|
2709
|
+
tableColumn.generatedType = "STORED";
|
|
2710
|
+
asExpressionQuery = "SELECT * FROM \"typeorm_metadata\" "
|
|
2711
|
+
+ (" WHERE \"table\" = '" + dbTable["table_name"] + "'")
|
|
2712
|
+
+ (" AND \"name\" = '" + tableColumn.name + "'")
|
|
2713
|
+
+ (" AND \"schema\" = '" + dbTable["table_schema"] + "'")
|
|
2714
|
+
+ (" AND \"database\" = '" + this.driver.database + "'")
|
|
2715
|
+
+ (" AND \"type\" = '" + MetadataTableType.GENERATED_COLUMN + "'");
|
|
2716
|
+
return [4 /*yield*/, this.query(asExpressionQuery)];
|
|
2717
|
+
case 8:
|
|
2718
|
+
results = _a.sent();
|
|
2719
|
+
if (results[0] && results[0].value) {
|
|
2720
|
+
tableColumn.asExpression = results[0].value;
|
|
2721
|
+
}
|
|
2722
|
+
else {
|
|
2723
|
+
tableColumn.asExpression = "";
|
|
2724
|
+
}
|
|
2725
|
+
_a.label = 9;
|
|
2726
|
+
case 9:
|
|
2565
2727
|
tableColumn.comment = dbColumn["description"] ? dbColumn["description"] : undefined;
|
|
2566
2728
|
if (dbColumn["character_set_name"])
|
|
2567
2729
|
tableColumn.charset = dbColumn["character_set_name"];
|
|
@@ -2759,24 +2921,19 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2759
2921
|
};
|
|
2760
2922
|
PostgresQueryRunner.prototype.insertViewDefinitionSql = function (view) {
|
|
2761
2923
|
return __awaiter(this, void 0, void 0, function () {
|
|
2762
|
-
var currentSchema, _a, schema, name, type, expression
|
|
2763
|
-
return __generator(this, function (
|
|
2764
|
-
switch (
|
|
2924
|
+
var currentSchema, _a, schema, name, type, expression;
|
|
2925
|
+
return __generator(this, function (_b) {
|
|
2926
|
+
switch (_b.label) {
|
|
2765
2927
|
case 0: return [4 /*yield*/, this.getCurrentSchema()];
|
|
2766
2928
|
case 1:
|
|
2767
|
-
currentSchema =
|
|
2929
|
+
currentSchema = _b.sent();
|
|
2768
2930
|
_a = this.driver.parseTableName(view), schema = _a.schema, name = _a.tableName;
|
|
2769
2931
|
if (!schema) {
|
|
2770
2932
|
schema = currentSchema;
|
|
2771
2933
|
}
|
|
2772
|
-
type = view.materialized ?
|
|
2934
|
+
type = view.materialized ? MetadataTableType.MATERIALIZED_VIEW : MetadataTableType.VIEW;
|
|
2773
2935
|
expression = typeof view.expression === "string" ? view.expression.trim() : view.expression(this.connection).getQuery();
|
|
2774
|
-
|
|
2775
|
-
.insert()
|
|
2776
|
-
.into(this.getTypeormMetadataTableName())
|
|
2777
|
-
.values({ type: type, schema: schema, name: name, value: expression })
|
|
2778
|
-
.getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
|
|
2779
|
-
return [2 /*return*/, new Query(query, parameters)];
|
|
2936
|
+
return [2 /*return*/, this.insertTypeormMetadataSql({ type: type, schema: schema, name: name, value: expression })];
|
|
2780
2937
|
}
|
|
2781
2938
|
});
|
|
2782
2939
|
});
|
|
@@ -2793,25 +2950,18 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
2793
2950
|
*/
|
|
2794
2951
|
PostgresQueryRunner.prototype.deleteViewDefinitionSql = function (view) {
|
|
2795
2952
|
return __awaiter(this, void 0, void 0, function () {
|
|
2796
|
-
var currentSchema, _a, schema, name, type
|
|
2797
|
-
return __generator(this, function (
|
|
2798
|
-
switch (
|
|
2953
|
+
var currentSchema, _a, schema, name, type;
|
|
2954
|
+
return __generator(this, function (_b) {
|
|
2955
|
+
switch (_b.label) {
|
|
2799
2956
|
case 0: return [4 /*yield*/, this.getCurrentSchema()];
|
|
2800
2957
|
case 1:
|
|
2801
|
-
currentSchema =
|
|
2958
|
+
currentSchema = _b.sent();
|
|
2802
2959
|
_a = this.driver.parseTableName(view), schema = _a.schema, name = _a.tableName;
|
|
2803
2960
|
if (!schema) {
|
|
2804
2961
|
schema = currentSchema;
|
|
2805
2962
|
}
|
|
2806
|
-
type = view.materialized ?
|
|
2807
|
-
|
|
2808
|
-
_b = __read(qb.delete()
|
|
2809
|
-
.from(this.getTypeormMetadataTableName())
|
|
2810
|
-
.where(qb.escape("type") + " = :type", { type: type })
|
|
2811
|
-
.andWhere(qb.escape("schema") + " = :schema", { schema: schema })
|
|
2812
|
-
.andWhere(qb.escape("name") + " = :name", { name: name })
|
|
2813
|
-
.getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
|
|
2814
|
-
return [2 /*return*/, new Query(query, parameters)];
|
|
2963
|
+
type = view.materialized ? MetadataTableType.MATERIALIZED_VIEW : MetadataTableType.VIEW;
|
|
2964
|
+
return [2 /*return*/, this.deleteTypeormMetadataSql({ type: type, schema: schema, name: name })];
|
|
2815
2965
|
}
|
|
2816
2966
|
});
|
|
2817
2967
|
});
|
|
@@ -3062,6 +3212,28 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
3062
3212
|
}
|
|
3063
3213
|
return "\"" + tableName + "\"";
|
|
3064
3214
|
};
|
|
3215
|
+
/**
|
|
3216
|
+
* Get the table name with table schema
|
|
3217
|
+
* Note: Without ' or "
|
|
3218
|
+
*/
|
|
3219
|
+
PostgresQueryRunner.prototype.getTableNameWithSchema = function (target) {
|
|
3220
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3221
|
+
var tableName, schemaResult, schema;
|
|
3222
|
+
return __generator(this, function (_a) {
|
|
3223
|
+
switch (_a.label) {
|
|
3224
|
+
case 0:
|
|
3225
|
+
tableName = target instanceof Table ? target.name : target;
|
|
3226
|
+
if (!(tableName.indexOf(".") === -1)) return [3 /*break*/, 2];
|
|
3227
|
+
return [4 /*yield*/, this.query("SELECT current_schema()")];
|
|
3228
|
+
case 1:
|
|
3229
|
+
schemaResult = _a.sent();
|
|
3230
|
+
schema = schemaResult[0]["current_schema"];
|
|
3231
|
+
return [2 /*return*/, schema + "." + tableName];
|
|
3232
|
+
case 2: return [2 /*return*/, tableName.split(".")[0] + "." + tableName.split(".")[1]];
|
|
3233
|
+
}
|
|
3234
|
+
});
|
|
3235
|
+
});
|
|
3236
|
+
};
|
|
3065
3237
|
/**
|
|
3066
3238
|
* Builds a query for create column.
|
|
3067
3239
|
*/
|
|
@@ -3088,16 +3260,23 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
|
|
|
3088
3260
|
else if (!column.isGenerated || column.type === "uuid") {
|
|
3089
3261
|
c += " " + this.connection.driver.createFullType(column);
|
|
3090
3262
|
}
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
if (column.
|
|
3094
|
-
c += "
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3263
|
+
// CHARACTER SET, COLLATE, NOT NULL and DEFAULT do not exist on generated (virtual) columns
|
|
3264
|
+
// Also, postgres only supports the stored generated column type
|
|
3265
|
+
if (column.generatedType === "STORED" && column.asExpression) {
|
|
3266
|
+
c += " GENERATED ALWAYS AS (" + column.asExpression + ") STORED";
|
|
3267
|
+
}
|
|
3268
|
+
else {
|
|
3269
|
+
if (column.charset)
|
|
3270
|
+
c += " CHARACTER SET \"" + column.charset + "\"";
|
|
3271
|
+
if (column.collation)
|
|
3272
|
+
c += " COLLATE \"" + column.collation + "\"";
|
|
3273
|
+
if (column.isNullable !== true)
|
|
3274
|
+
c += " NOT NULL";
|
|
3275
|
+
if (column.default !== undefined && column.default !== null)
|
|
3276
|
+
c += " DEFAULT " + column.default;
|
|
3277
|
+
if (column.isGenerated && column.generationStrategy === "uuid" && !column.default)
|
|
3278
|
+
c += " DEFAULT " + this.driver.uuidGenerator;
|
|
3279
|
+
}
|
|
3101
3280
|
return c;
|
|
3102
3281
|
};
|
|
3103
3282
|
/**
|