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
@@ -432,27 +432,28 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
432
432
  }
433
433
  // if table have column with generated type, we must add the expression to the metadata table
434
434
  const generatedColumns = table.columns.filter((column) => column.generatedType === "STORED" && column.asExpression);
435
- for (const column of generatedColumns) {
436
- const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
437
- const tableName = tableNameWithSchema[1];
438
- const schema = tableNameWithSchema[0];
439
- const insertQuery = this.insertTypeormMetadataSql({
440
- database: this.driver.database,
441
- schema,
442
- table: tableName,
443
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
444
- name: column.name,
445
- value: column.asExpression,
446
- });
447
- const deleteQuery = this.deleteTypeormMetadataSql({
448
- database: this.driver.database,
449
- schema,
450
- table: tableName,
451
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
452
- name: column.name,
453
- });
454
- upQueries.push(insertQuery);
455
- downQueries.push(deleteQuery);
435
+ if (generatedColumns.length > 0) {
436
+ const parsedTableName = this.driver.parseTableName(table);
437
+ parsedTableName.schema ??= await this.getCurrentSchema();
438
+ for (const column of generatedColumns) {
439
+ const insertQuery = this.insertTypeormMetadataSql({
440
+ database: this.driver.database,
441
+ schema: parsedTableName.schema,
442
+ table: parsedTableName.tableName,
443
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
444
+ name: column.name,
445
+ value: column.asExpression,
446
+ });
447
+ const deleteQuery = this.deleteTypeormMetadataSql({
448
+ database: this.driver.database,
449
+ schema: parsedTableName.schema,
450
+ table: parsedTableName.tableName,
451
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
452
+ name: column.name,
453
+ });
454
+ upQueries.push(insertQuery);
455
+ downQueries.push(deleteQuery);
456
+ }
456
457
  }
457
458
  upQueries.push(this.createTableSql(table, createForeignKeys));
458
459
  downQueries.push(this.dropTableSql(table));
@@ -508,28 +509,31 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
508
509
  upQueries.push(this.dropTableSql(table));
509
510
  downQueries.push(this.createTableSql(table, createForeignKeys));
510
511
  // if table had columns with generated type, we must remove the expression from the metadata table
511
- const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
512
- for (const column of generatedColumns) {
513
- const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
514
- const tableName = tableNameWithSchema[1];
515
- const schema = tableNameWithSchema[0];
516
- const deleteQuery = this.deleteTypeormMetadataSql({
517
- database: this.driver.database,
518
- schema,
519
- table: tableName,
520
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
521
- name: column.name,
522
- });
523
- const insertQuery = this.insertTypeormMetadataSql({
524
- database: this.driver.database,
525
- schema,
526
- table: tableName,
527
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
528
- name: column.name,
529
- value: column.asExpression,
530
- });
531
- upQueries.push(deleteQuery);
532
- downQueries.push(insertQuery);
512
+ const generatedColumns = table.columns.filter((column) => column.generatedType);
513
+ if (generatedColumns.length > 0) {
514
+ const parsedTableName = this.driver.parseTableName(table);
515
+ parsedTableName.schema ??= await this.getCurrentSchema();
516
+ for (const column of generatedColumns) {
517
+ const deleteQuery = this.deleteTypeormMetadataSql({
518
+ database: this.driver.database,
519
+ schema: parsedTableName.schema,
520
+ table: parsedTableName.tableName,
521
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
522
+ name: column.name,
523
+ });
524
+ upQueries.push(deleteQuery);
525
+ if (column.asExpression) {
526
+ const insertQuery = this.insertTypeormMetadataSql({
527
+ database: this.driver.database,
528
+ schema: parsedTableName.schema,
529
+ table: parsedTableName.tableName,
530
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
531
+ name: column.name,
532
+ value: column.asExpression,
533
+ });
534
+ downQueries.push(insertQuery);
535
+ }
536
+ }
533
537
  }
534
538
  await this.executeQueries(upQueries, downQueries);
535
539
  }
@@ -588,12 +592,32 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
588
592
  ? oldTableOrName
589
593
  : await this.getCachedTable(oldTableOrName);
590
594
  const newTable = oldTable.clone();
591
- const { schema: schemaName, tableName: oldTableName } = this.driver.parseTableName(oldTable);
595
+ let { schema: schemaName, tableName: oldTableName } = this.driver.parseTableName(oldTable);
596
+ schemaName ??= await this.getCurrentSchema();
592
597
  newTable.name = schemaName
593
598
  ? `${schemaName}.${newTableName}`
594
599
  : newTableName;
595
600
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
596
601
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
602
+ const hasGeneratedColumns = oldTable.columns.some((col) => col.generatedType === "STORED");
603
+ if (hasGeneratedColumns) {
604
+ const updateQuery = this.updateTypeormMetadataSql({
605
+ database: this.driver.database,
606
+ schema: schemaName,
607
+ table: oldTableName,
608
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
609
+ valueToSet: { table: newTableName },
610
+ });
611
+ const revertUpdateQuery = this.updateTypeormMetadataSql({
612
+ database: this.driver.database,
613
+ schema: schemaName,
614
+ table: newTableName,
615
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
616
+ valueToSet: { table: oldTableName },
617
+ });
618
+ upQueries.push(updateQuery);
619
+ downQueries.push(revertUpdateQuery);
620
+ }
597
621
  // rename column primary key constraint if it has default constraint name
598
622
  if (newTable.primaryColumns.length > 0 &&
599
623
  !newTable.primaryColumns[0].primaryKeyConstraintName) {
@@ -739,21 +763,20 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
739
763
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${uniqueConstraint.name}"`));
740
764
  }
741
765
  if (column.generatedType === "STORED" && column.asExpression) {
742
- const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
743
- const tableName = tableNameWithSchema[1];
744
- const schema = tableNameWithSchema[0];
766
+ const parsedTableName = this.driver.parseTableName(table);
767
+ parsedTableName.schema ??= await this.getCurrentSchema();
745
768
  const insertQuery = this.insertTypeormMetadataSql({
746
769
  database: this.driver.database,
747
- schema,
748
- table: tableName,
770
+ schema: parsedTableName.schema,
771
+ table: parsedTableName.tableName,
749
772
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
750
773
  name: column.name,
751
774
  value: column.asExpression,
752
775
  });
753
776
  const deleteQuery = this.deleteTypeormMetadataSql({
754
777
  database: this.driver.database,
755
- schema,
756
- table: tableName,
778
+ schema: parsedTableName.schema,
779
+ table: parsedTableName.tableName,
757
780
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
758
781
  name: column.name,
759
782
  });
@@ -844,6 +867,28 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
844
867
  // rename column
845
868
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
846
869
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
870
+ if (oldColumn.generatedType === "STORED") {
871
+ const parsedTableName = this.driver.parseTableName(table);
872
+ parsedTableName.schema ??= await this.getCurrentSchema();
873
+ const updateQuery = this.updateTypeormMetadataSql({
874
+ database: this.driver.database,
875
+ schema: parsedTableName.schema,
876
+ table: parsedTableName.tableName,
877
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
878
+ name: oldColumn.name,
879
+ valueToSet: { name: newColumn.name },
880
+ });
881
+ const revertUpdateQuery = this.updateTypeormMetadataSql({
882
+ database: this.driver.database,
883
+ schema: parsedTableName.schema,
884
+ table: parsedTableName.tableName,
885
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
886
+ name: newColumn.name,
887
+ valueToSet: { name: oldColumn.name },
888
+ });
889
+ upQueries.push(updateQuery);
890
+ downQueries.push(revertUpdateQuery);
891
+ }
847
892
  // rename ENUM type
848
893
  if (oldColumn.type === "enum" ||
849
894
  oldColumn.type === "simple-enum") {
@@ -1169,25 +1214,24 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1169
1214
  if (!newColumn.generatedType ||
1170
1215
  newColumn.generatedType === "VIRTUAL") {
1171
1216
  // We can copy the generated data to the new column
1172
- const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
1173
- const tableName = tableNameWithSchema[1];
1174
- const schema = tableNameWithSchema[0];
1175
1217
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "TEMP_OLD_${oldColumn.name}"`));
1176
1218
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, newColumn)}`));
1177
1219
  upQueries.push(new Query_1.Query(`UPDATE ${this.escapePath(table)} SET "${newColumn.name}" = "TEMP_OLD_${oldColumn.name}"`));
1178
1220
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "TEMP_OLD_${oldColumn.name}"`));
1221
+ const parsedTableName = this.driver.parseTableName(table);
1222
+ parsedTableName.schema ??= await this.getCurrentSchema();
1179
1223
  upQueries.push(this.deleteTypeormMetadataSql({
1180
1224
  database: this.driver.database,
1181
- schema,
1182
- table: tableName,
1225
+ schema: parsedTableName.schema,
1226
+ table: parsedTableName.tableName,
1183
1227
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1184
1228
  name: oldColumn.name,
1185
1229
  }));
1186
1230
  // However, we can't copy it back on downgrade. It needs to regenerate.
1187
1231
  downQueries.push(this.insertTypeormMetadataSql({
1188
1232
  database: this.driver.database,
1189
- schema,
1190
- table: tableName,
1233
+ schema: parsedTableName.schema,
1234
+ table: parsedTableName.tableName,
1191
1235
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1192
1236
  name: oldColumn.name,
1193
1237
  value: oldColumn.asExpression,
@@ -1304,26 +1348,27 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1304
1348
  }
1305
1349
  }
1306
1350
  if (column.generatedType === "STORED") {
1307
- const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
1308
- const tableName = tableNameWithSchema[1];
1309
- const schema = tableNameWithSchema[0];
1351
+ const parsedTableName = this.driver.parseTableName(table);
1352
+ parsedTableName.schema ??= await this.getCurrentSchema();
1310
1353
  const deleteQuery = this.deleteTypeormMetadataSql({
1311
1354
  database: this.driver.database,
1312
- schema,
1313
- table: tableName,
1314
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1315
- name: column.name,
1316
- });
1317
- const insertQuery = this.insertTypeormMetadataSql({
1318
- database: this.driver.database,
1319
- schema,
1320
- table: tableName,
1355
+ schema: parsedTableName.schema,
1356
+ table: parsedTableName.tableName,
1321
1357
  type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1322
1358
  name: column.name,
1323
- value: column.asExpression,
1324
1359
  });
1325
1360
  upQueries.push(deleteQuery);
1326
- downQueries.push(insertQuery);
1361
+ if (column.asExpression) {
1362
+ const insertQuery = this.insertTypeormMetadataSql({
1363
+ database: this.driver.database,
1364
+ schema: parsedTableName.schema,
1365
+ table: parsedTableName.tableName,
1366
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1367
+ name: column.name,
1368
+ value: column.asExpression,
1369
+ });
1370
+ downQueries.push(insertQuery);
1371
+ }
1327
1372
  }
1328
1373
  await this.executeQueries(upQueries, downQueries);
1329
1374
  clonedTable.removeColumn(column);