typeorm 1.1.1 → 1.1.2
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/LICENSE +21 -0
- package/browser/data-source/DataSource.d.ts +1 -0
- package/browser/data-source/DataSource.js +56 -29
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +9 -4
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +71 -31
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +132 -84
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +84 -40
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +6 -3
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +117 -72
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +24 -20
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +20 -16
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +52 -31
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +95 -49
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +6 -0
- package/browser/entity-manager/EntityManager.js +6 -0
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +5 -2
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.js +2 -3
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +15 -5
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/data-source/DataSource.d.ts +1 -0
- package/data-source/DataSource.js +56 -29
- package/data-source/DataSource.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +9 -4
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +71 -31
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +132 -84
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +84 -40
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +6 -3
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +117 -72
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +24 -20
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.js +20 -16
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +52 -31
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +95 -49
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +6 -0
- package/entity-manager/EntityManager.js +6 -0
- package/entity-manager/EntityManager.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +5 -2
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/package.json +3 -3
- package/persistence/tree/ClosureSubjectExecutor.js +2 -3
- package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +15 -5
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
|
@@ -531,6 +531,7 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
531
531
|
if (generatedColumns.length > 0) {
|
|
532
532
|
const parsedTableName = this.driver.parseTableName(table);
|
|
533
533
|
parsedTableName.schema ??= await this.getCurrentSchema();
|
|
534
|
+
parsedTableName.database ??= await this.getCurrentDatabase();
|
|
534
535
|
for (const column of generatedColumns) {
|
|
535
536
|
const insertQuery = this.insertTypeormMetadataSql({
|
|
536
537
|
database: parsedTableName.database,
|
|
@@ -589,10 +590,11 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
589
590
|
upQueries.push(this.dropTableSql(table));
|
|
590
591
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
591
592
|
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
592
|
-
const generatedColumns = table.columns.filter((column) => column.generatedType
|
|
593
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType);
|
|
593
594
|
if (generatedColumns.length > 0) {
|
|
594
595
|
const parsedTableName = this.driver.parseTableName(table);
|
|
595
596
|
parsedTableName.schema ??= await this.getCurrentSchema();
|
|
597
|
+
parsedTableName.database ??= await this.getCurrentDatabase();
|
|
596
598
|
for (const column of generatedColumns) {
|
|
597
599
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
598
600
|
database: parsedTableName.database,
|
|
@@ -601,16 +603,18 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
601
603
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
602
604
|
name: column.name,
|
|
603
605
|
});
|
|
604
|
-
const insertQuery = this.insertTypeormMetadataSql({
|
|
605
|
-
database: parsedTableName.database,
|
|
606
|
-
schema: parsedTableName.schema,
|
|
607
|
-
table: parsedTableName.tableName,
|
|
608
|
-
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
609
|
-
name: column.name,
|
|
610
|
-
value: column.asExpression,
|
|
611
|
-
});
|
|
612
606
|
upQueries.push(deleteQuery);
|
|
613
|
-
|
|
607
|
+
if (column.asExpression) {
|
|
608
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
609
|
+
database: parsedTableName.database,
|
|
610
|
+
schema: parsedTableName.schema,
|
|
611
|
+
table: parsedTableName.tableName,
|
|
612
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
613
|
+
name: column.name,
|
|
614
|
+
value: column.asExpression,
|
|
615
|
+
});
|
|
616
|
+
downQueries.push(insertQuery);
|
|
617
|
+
}
|
|
614
618
|
}
|
|
615
619
|
}
|
|
616
620
|
await this.executeQueries(upQueries, downQueries);
|
|
@@ -670,21 +674,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
670
674
|
? oldTableOrName
|
|
671
675
|
: await this.getCachedTable(oldTableOrName);
|
|
672
676
|
const newTable = oldTable.clone();
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
let oldTableName = oldTable.name;
|
|
677
|
-
const splittedName = oldTable.name.split(".");
|
|
678
|
-
if (splittedName.length === 3) {
|
|
679
|
-
dbName = splittedName[0];
|
|
680
|
-
oldTableName = splittedName[2];
|
|
681
|
-
if (splittedName[1] !== "")
|
|
682
|
-
schemaName = splittedName[1];
|
|
683
|
-
}
|
|
684
|
-
else if (splittedName.length === 2) {
|
|
685
|
-
schemaName = splittedName[0];
|
|
686
|
-
oldTableName = splittedName[1];
|
|
687
|
-
}
|
|
677
|
+
let { tableName: oldTableName, database: dbName, schema: schemaName, } = this.driver.parseTableName(oldTable.name);
|
|
678
|
+
dbName ??= await this.getCurrentDatabase();
|
|
679
|
+
schemaName ??= await this.getCurrentSchema();
|
|
688
680
|
newTable.name = this.driver.buildTableName(newTableName, schemaName, dbName);
|
|
689
681
|
// if we have tables with database which differs from database specified in config, we must change currently used database.
|
|
690
682
|
// This need because we can not rename objects from another database.
|
|
@@ -696,6 +688,25 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
696
688
|
// rename table
|
|
697
689
|
upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(oldTable)}", "${newTableName}"`));
|
|
698
690
|
downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(newTable)}", "${oldTableName}"`));
|
|
691
|
+
const hasGeneratedColumns = oldTable.columns.some((col) => col.generatedType);
|
|
692
|
+
let updateMetadataQuery;
|
|
693
|
+
let revertMetadataQuery;
|
|
694
|
+
if (hasGeneratedColumns) {
|
|
695
|
+
updateMetadataQuery = this.updateTypeormMetadataSql({
|
|
696
|
+
database: dbName,
|
|
697
|
+
schema: schemaName,
|
|
698
|
+
table: oldTableName,
|
|
699
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
700
|
+
valueToSet: { table: newTableName },
|
|
701
|
+
});
|
|
702
|
+
revertMetadataQuery = this.updateTypeormMetadataSql({
|
|
703
|
+
database: dbName,
|
|
704
|
+
schema: schemaName,
|
|
705
|
+
table: newTableName,
|
|
706
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
707
|
+
valueToSet: { table: oldTableName },
|
|
708
|
+
});
|
|
709
|
+
}
|
|
699
710
|
// rename primary key constraint
|
|
700
711
|
if (newTable.primaryColumns.length > 0 &&
|
|
701
712
|
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
@@ -753,6 +764,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
753
764
|
upQueries.push(new Query_1.Query(`USE "${currentDB}"`));
|
|
754
765
|
downQueries.push(new Query_1.Query(`USE "${dbName}"`));
|
|
755
766
|
}
|
|
767
|
+
if (updateMetadataQuery)
|
|
768
|
+
upQueries.push(updateMetadataQuery);
|
|
769
|
+
if (revertMetadataQuery)
|
|
770
|
+
downQueries.push(revertMetadataQuery);
|
|
756
771
|
await this.executeQueries(upQueries, downQueries);
|
|
757
772
|
// rename old table and replace it in cached tabled;
|
|
758
773
|
oldTable.name = newTable.name;
|
|
@@ -820,6 +835,7 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
820
835
|
if (column.generatedType && column.asExpression) {
|
|
821
836
|
const parsedTableName = this.driver.parseTableName(table);
|
|
822
837
|
parsedTableName.schema ??= await this.getCurrentSchema();
|
|
838
|
+
parsedTableName.database ??= await this.getCurrentDatabase();
|
|
823
839
|
const insertQuery = this.insertTypeormMetadataSql({
|
|
824
840
|
database: parsedTableName.database,
|
|
825
841
|
schema: parsedTableName.schema,
|
|
@@ -914,17 +930,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
914
930
|
else {
|
|
915
931
|
if (newColumn.name !== oldColumn.name) {
|
|
916
932
|
// we need database name and schema name to rename FK constraints
|
|
917
|
-
let dbName =
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
if (splittedName.length === 3) {
|
|
921
|
-
dbName = splittedName[0];
|
|
922
|
-
if (splittedName[1] !== "")
|
|
923
|
-
schemaName = splittedName[1];
|
|
924
|
-
}
|
|
925
|
-
else if (splittedName.length === 2) {
|
|
926
|
-
schemaName = splittedName[0];
|
|
927
|
-
}
|
|
933
|
+
let { database: dbName, schema: schemaName, tableName, } = this.driver.parseTableName(table);
|
|
934
|
+
schemaName ??= await this.getCurrentSchema();
|
|
935
|
+
dbName ??= await this.getCurrentDatabase();
|
|
928
936
|
// if we have tables with database which differs from database specified in config, we must change currently used database.
|
|
929
937
|
// This need because we can not rename objects from another database.
|
|
930
938
|
const currentDB = await this.getCurrentDatabase();
|
|
@@ -935,6 +943,26 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
935
943
|
// rename the column
|
|
936
944
|
upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${oldColumn.name}", "${newColumn.name}"`));
|
|
937
945
|
downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${newColumn.name}", "${oldColumn.name}"`));
|
|
946
|
+
let updateMetadataQuery;
|
|
947
|
+
let revertMetadataQuery;
|
|
948
|
+
if (oldColumn.generatedType) {
|
|
949
|
+
updateMetadataQuery = this.updateTypeormMetadataSql({
|
|
950
|
+
database: dbName,
|
|
951
|
+
schema: schemaName,
|
|
952
|
+
table: tableName,
|
|
953
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
954
|
+
name: oldColumn.name,
|
|
955
|
+
valueToSet: { name: newColumn.name },
|
|
956
|
+
});
|
|
957
|
+
revertMetadataQuery = this.updateTypeormMetadataSql({
|
|
958
|
+
database: dbName,
|
|
959
|
+
schema: schemaName,
|
|
960
|
+
table: tableName,
|
|
961
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
962
|
+
name: newColumn.name,
|
|
963
|
+
valueToSet: { name: oldColumn.name },
|
|
964
|
+
});
|
|
965
|
+
}
|
|
938
966
|
// rename column primary key constraint
|
|
939
967
|
if (oldColumn.isPrimary === true &&
|
|
940
968
|
!oldColumn.primaryKeyConstraintName) {
|
|
@@ -1028,6 +1056,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1028
1056
|
upQueries.push(new Query_1.Query(`USE "${currentDB}"`));
|
|
1029
1057
|
downQueries.push(new Query_1.Query(`USE "${dbName}"`));
|
|
1030
1058
|
}
|
|
1059
|
+
if (updateMetadataQuery)
|
|
1060
|
+
upQueries.push(updateMetadataQuery);
|
|
1061
|
+
if (revertMetadataQuery)
|
|
1062
|
+
downQueries.push(revertMetadataQuery);
|
|
1031
1063
|
// rename old column in the Table object
|
|
1032
1064
|
const oldTableColumn = clonedTable.columns.find((column) => column.name === oldColumn.name);
|
|
1033
1065
|
clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn)].name = newColumn.name;
|
|
@@ -1222,9 +1254,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1222
1254
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
|
|
1223
1255
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${defaultName}" DEFAULT ${column.default} FOR "${column.name}"`));
|
|
1224
1256
|
}
|
|
1225
|
-
if (column.generatedType
|
|
1257
|
+
if (column.generatedType) {
|
|
1226
1258
|
const parsedTableName = this.driver.parseTableName(table);
|
|
1227
1259
|
parsedTableName.schema ??= await this.getCurrentSchema();
|
|
1260
|
+
parsedTableName.database ??= await this.getCurrentDatabase();
|
|
1228
1261
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1229
1262
|
database: parsedTableName.database,
|
|
1230
1263
|
schema: parsedTableName.schema,
|
|
@@ -1232,16 +1265,18 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1232
1265
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1233
1266
|
name: column.name,
|
|
1234
1267
|
});
|
|
1235
|
-
const insertQuery = this.insertTypeormMetadataSql({
|
|
1236
|
-
database: parsedTableName.database,
|
|
1237
|
-
schema: parsedTableName.schema,
|
|
1238
|
-
table: parsedTableName.tableName,
|
|
1239
|
-
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1240
|
-
name: column.name,
|
|
1241
|
-
value: column.asExpression,
|
|
1242
|
-
});
|
|
1243
1268
|
upQueries.push(deleteQuery);
|
|
1244
|
-
|
|
1269
|
+
if (column.asExpression) {
|
|
1270
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1271
|
+
database: parsedTableName.database,
|
|
1272
|
+
schema: parsedTableName.schema,
|
|
1273
|
+
table: parsedTableName.tableName,
|
|
1274
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1275
|
+
name: column.name,
|
|
1276
|
+
value: column.asExpression,
|
|
1277
|
+
});
|
|
1278
|
+
downQueries.push(insertQuery);
|
|
1279
|
+
}
|
|
1245
1280
|
}
|
|
1246
1281
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
|
|
1247
1282
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, column, false, false)}`));
|
|
@@ -1722,6 +1757,13 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1722
1757
|
return this.query(dropTableSql);
|
|
1723
1758
|
}));
|
|
1724
1759
|
}
|
|
1760
|
+
if (database) {
|
|
1761
|
+
const metadataTableName = this.getTypeormMetadataTableName();
|
|
1762
|
+
const hasMetadataTable = await this.hasTable(metadataTableName);
|
|
1763
|
+
if (hasMetadataTable) {
|
|
1764
|
+
await this.query(`DELETE FROM ${this.escapePath(metadataTableName)} WHERE "database" = @0`, [database]);
|
|
1765
|
+
}
|
|
1766
|
+
}
|
|
1725
1767
|
if (!isAnotherTransactionActive)
|
|
1726
1768
|
await this.commitTransaction();
|
|
1727
1769
|
}
|
|
@@ -1856,9 +1898,13 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1856
1898
|
.join("OR");
|
|
1857
1899
|
return (`SELECT "COLUMNS".*, "cc"."is_persisted", "cc"."definition" ` +
|
|
1858
1900
|
`FROM "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."COLUMNS" ` +
|
|
1859
|
-
`LEFT JOIN "${TABLE_CATALOG}"."sys"."
|
|
1860
|
-
`
|
|
1861
|
-
`AND
|
|
1901
|
+
`LEFT JOIN "${TABLE_CATALOG}"."sys"."schemas" "ss" ON "ss"."name" = "TABLE_SCHEMA" ` +
|
|
1902
|
+
`LEFT JOIN "${TABLE_CATALOG}"."sys"."tables" "st" ON "st"."name" = "TABLE_NAME" ` +
|
|
1903
|
+
`AND "st"."schema_id" = "ss"."schema_id" ` +
|
|
1904
|
+
`LEFT JOIN "${TABLE_CATALOG}"."sys"."columns" "sc" ON "sc"."object_id" = "st"."object_id" ` +
|
|
1905
|
+
`AND "sc"."name" = "COLUMN_NAME" ` +
|
|
1906
|
+
`LEFT JOIN "${TABLE_CATALOG}"."sys"."computed_columns" "cc" ON "cc"."object_id" = "sc"."object_id" ` +
|
|
1907
|
+
`AND "cc"."column_id" = "sc"."column_id" ` +
|
|
1862
1908
|
`WHERE (${condition})`);
|
|
1863
1909
|
})
|
|
1864
1910
|
.join(" UNION ALL ");
|