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.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/browser/data-source/DataSource.d.ts +1 -0
  3. package/browser/data-source/DataSource.js +56 -29
  4. package/browser/data-source/DataSource.js.map +1 -1
  5. package/browser/driver/cockroachdb/CockroachDriver.js +9 -4
  6. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  7. package/browser/driver/cockroachdb/CockroachQueryRunner.js +71 -31
  8. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  9. package/browser/driver/mysql/MysqlQueryRunner.js +132 -84
  10. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  11. package/browser/driver/oracle/OracleQueryRunner.js +84 -40
  12. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  13. package/browser/driver/postgres/PostgresDriver.js +6 -3
  14. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  15. package/browser/driver/postgres/PostgresQueryRunner.js +117 -72
  16. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  17. package/browser/driver/sap/SapQueryRunner.js +24 -20
  18. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  19. package/browser/driver/spanner/SpannerQueryRunner.js +20 -16
  20. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  21. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +52 -31
  22. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  23. package/browser/driver/sqlserver/SqlServerQueryRunner.js +95 -49
  24. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  25. package/browser/entity-manager/EntityManager.d.ts +6 -0
  26. package/browser/entity-manager/EntityManager.js +6 -0
  27. package/browser/entity-manager/EntityManager.js.map +1 -1
  28. package/browser/metadata-builder/EntityMetadataBuilder.js +5 -2
  29. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  30. package/browser/persistence/tree/ClosureSubjectExecutor.js +2 -3
  31. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  32. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +15 -5
  33. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  34. package/data-source/DataSource.d.ts +1 -0
  35. package/data-source/DataSource.js +56 -29
  36. package/data-source/DataSource.js.map +1 -1
  37. package/driver/cockroachdb/CockroachDriver.js +9 -4
  38. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  39. package/driver/cockroachdb/CockroachQueryRunner.js +71 -31
  40. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  41. package/driver/mysql/MysqlQueryRunner.js +132 -84
  42. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  43. package/driver/oracle/OracleQueryRunner.js +84 -40
  44. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  45. package/driver/postgres/PostgresDriver.js +6 -3
  46. package/driver/postgres/PostgresDriver.js.map +1 -1
  47. package/driver/postgres/PostgresQueryRunner.js +117 -72
  48. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  49. package/driver/sap/SapQueryRunner.js +24 -20
  50. package/driver/sap/SapQueryRunner.js.map +1 -1
  51. package/driver/spanner/SpannerQueryRunner.js +20 -16
  52. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  53. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +52 -31
  54. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  55. package/driver/sqlserver/SqlServerQueryRunner.js +95 -49
  56. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  57. package/entity-manager/EntityManager.d.ts +6 -0
  58. package/entity-manager/EntityManager.js +6 -0
  59. package/entity-manager/EntityManager.js.map +1 -1
  60. package/metadata-builder/EntityMetadataBuilder.js +5 -2
  61. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  62. package/package.json +3 -3
  63. package/persistence/tree/ClosureSubjectExecutor.js +2 -3
  64. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  65. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +15 -5
  66. 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 && column.asExpression);
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
- downQueries.push(insertQuery);
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
- // we need database name and schema name to rename FK constraints
674
- let dbName = undefined;
675
- let schemaName = undefined;
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 = undefined;
918
- let schemaName = undefined;
919
- const splittedName = table.name.split(".");
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 && column.asExpression) {
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
- downQueries.push(insertQuery);
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"."computed_columns" "cc" ON COL_NAME("cc"."object_id", "cc"."column_id") = "COLUMN_NAME" ` +
1860
- `AND OBJECT_NAME("cc"."object_id", DB_ID('${TABLE_CATALOG}')) = "TABLE_NAME" ` +
1861
- `AND OBJECT_SCHEMA_NAME("cc"."object_id", DB_ID('${TABLE_CATALOG}')) = "TABLE_SCHEMA" ` +
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 ");