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
|
@@ -374,18 +374,19 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
374
374
|
// if table has column with generated type, we must add the expression to the metadata table
|
|
375
375
|
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
376
376
|
if (generatedColumns.length > 0) {
|
|
377
|
-
|
|
377
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
378
|
+
database ??= await this.getCurrentDatabase();
|
|
378
379
|
for (const column of generatedColumns) {
|
|
379
380
|
const insertQuery = this.insertTypeormMetadataSql({
|
|
380
|
-
schema:
|
|
381
|
-
table:
|
|
381
|
+
schema: database,
|
|
382
|
+
table: tableName,
|
|
382
383
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
383
384
|
name: column.name,
|
|
384
385
|
value: column.asExpression,
|
|
385
386
|
});
|
|
386
387
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
387
|
-
schema:
|
|
388
|
-
table:
|
|
388
|
+
schema: database,
|
|
389
|
+
table: tableName,
|
|
389
390
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
390
391
|
name: column.name,
|
|
391
392
|
});
|
|
@@ -422,25 +423,28 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
422
423
|
upQueries.push(this.dropTableSql(table));
|
|
423
424
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
424
425
|
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
425
|
-
const generatedColumns = table.columns.filter((column) => column.generatedType
|
|
426
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType);
|
|
426
427
|
if (generatedColumns.length > 0) {
|
|
427
|
-
|
|
428
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
429
|
+
database ??= await this.getCurrentDatabase();
|
|
428
430
|
for (const column of generatedColumns) {
|
|
429
431
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
430
|
-
schema:
|
|
431
|
-
table:
|
|
432
|
+
schema: database,
|
|
433
|
+
table: tableName,
|
|
432
434
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
433
435
|
name: column.name,
|
|
434
436
|
});
|
|
435
|
-
const insertQuery = this.insertTypeormMetadataSql({
|
|
436
|
-
schema: currentDatabase,
|
|
437
|
-
table: table.name,
|
|
438
|
-
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
439
|
-
name: column.name,
|
|
440
|
-
value: column.asExpression,
|
|
441
|
-
});
|
|
442
437
|
upQueries.push(deleteQuery);
|
|
443
|
-
|
|
438
|
+
if (column.asExpression) {
|
|
439
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
440
|
+
schema: database,
|
|
441
|
+
table: tableName,
|
|
442
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
443
|
+
name: column.name,
|
|
444
|
+
value: column.asExpression,
|
|
445
|
+
});
|
|
446
|
+
downQueries.push(insertQuery);
|
|
447
|
+
}
|
|
444
448
|
}
|
|
445
449
|
}
|
|
446
450
|
await this.executeQueries(upQueries, downQueries);
|
|
@@ -497,11 +501,29 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
497
501
|
? oldTableOrName
|
|
498
502
|
: await this.getCachedTable(oldTableOrName);
|
|
499
503
|
const newTable = oldTable.clone();
|
|
500
|
-
|
|
504
|
+
let { database, tableName: oldTableName } = this.driver.parseTableName(oldTable);
|
|
505
|
+
database ??= await this.getCurrentDatabase();
|
|
501
506
|
newTable.name = database ? `${database}.${newTableName}` : newTableName;
|
|
502
507
|
// rename table
|
|
503
508
|
upQueries.push(new Query_1.Query(`RENAME TABLE ${this.escapePath(oldTable)} TO ${this.escapePath(newTable)}`));
|
|
504
509
|
downQueries.push(new Query_1.Query(`RENAME TABLE ${this.escapePath(newTable)} TO ${this.escapePath(oldTable)}`));
|
|
510
|
+
const hasGeneratedColumns = newTable.columns.some((col) => col.generatedType);
|
|
511
|
+
if (hasGeneratedColumns) {
|
|
512
|
+
const updateQuery = this.updateTypeormMetadataSql({
|
|
513
|
+
schema: database,
|
|
514
|
+
table: oldTableName,
|
|
515
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
516
|
+
valueToSet: { table: newTableName },
|
|
517
|
+
});
|
|
518
|
+
const revertUpdateQuery = this.updateTypeormMetadataSql({
|
|
519
|
+
schema: database,
|
|
520
|
+
table: newTableName,
|
|
521
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
522
|
+
valueToSet: { table: oldTableName },
|
|
523
|
+
});
|
|
524
|
+
upQueries.push(updateQuery);
|
|
525
|
+
downQueries.push(revertUpdateQuery);
|
|
526
|
+
}
|
|
505
527
|
// rename index constraints
|
|
506
528
|
newTable.indices.forEach((index) => {
|
|
507
529
|
const oldIndexName = this.dataSource.namingStrategy.indexName(oldTable, index.columnNames);
|
|
@@ -642,17 +664,18 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
642
664
|
}
|
|
643
665
|
}
|
|
644
666
|
if (column.generatedType && column.asExpression) {
|
|
645
|
-
|
|
667
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
668
|
+
database ??= await this.getCurrentDatabase();
|
|
646
669
|
const insertQuery = this.insertTypeormMetadataSql({
|
|
647
|
-
schema:
|
|
648
|
-
table:
|
|
670
|
+
schema: database,
|
|
671
|
+
table: tableName,
|
|
649
672
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
650
673
|
name: column.name,
|
|
651
674
|
value: column.asExpression,
|
|
652
675
|
});
|
|
653
676
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
654
|
-
schema:
|
|
655
|
-
table:
|
|
677
|
+
schema: database,
|
|
678
|
+
table: tableName,
|
|
656
679
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
657
680
|
name: column.name,
|
|
658
681
|
});
|
|
@@ -762,6 +785,26 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
762
785
|
// We don't change any column properties, just rename it.
|
|
763
786
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${oldColumn.name}\` \`${newColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true, true)}`));
|
|
764
787
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` \`${oldColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true, true)}`));
|
|
788
|
+
if (oldColumn.generatedType) {
|
|
789
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
790
|
+
database ??= await this.getCurrentDatabase();
|
|
791
|
+
const updateQuery = this.updateTypeormMetadataSql({
|
|
792
|
+
schema: database,
|
|
793
|
+
table: tableName,
|
|
794
|
+
name: oldColumn.name,
|
|
795
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
796
|
+
valueToSet: { name: newColumn.name },
|
|
797
|
+
});
|
|
798
|
+
const revertUpdateQuery = this.updateTypeormMetadataSql({
|
|
799
|
+
schema: database,
|
|
800
|
+
table: tableName,
|
|
801
|
+
name: newColumn.name,
|
|
802
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
803
|
+
valueToSet: { name: oldColumn.name },
|
|
804
|
+
});
|
|
805
|
+
upQueries.push(updateQuery);
|
|
806
|
+
downQueries.push(revertUpdateQuery);
|
|
807
|
+
}
|
|
765
808
|
// rename index constraints
|
|
766
809
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
767
810
|
const oldUniqueName = this.dataSource.namingStrategy.indexName(clonedTable, index.columnNames);
|
|
@@ -837,74 +880,69 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
837
880
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true)}`));
|
|
838
881
|
if (oldColumn.generatedType && !newColumn.generatedType) {
|
|
839
882
|
// if column changed from generated to non-generated, delete record from typeorm metadata
|
|
840
|
-
|
|
883
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
884
|
+
database ??= await this.getCurrentDatabase();
|
|
841
885
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
842
|
-
schema:
|
|
843
|
-
table:
|
|
844
|
-
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
845
|
-
name: oldColumn.name,
|
|
846
|
-
});
|
|
847
|
-
const insertQuery = this.insertTypeormMetadataSql({
|
|
848
|
-
schema: currentDatabase,
|
|
849
|
-
table: table.name,
|
|
886
|
+
schema: database,
|
|
887
|
+
table: tableName,
|
|
850
888
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
851
889
|
name: oldColumn.name,
|
|
852
|
-
value: oldColumn.asExpression,
|
|
853
890
|
});
|
|
854
891
|
upQueries.push(deleteQuery);
|
|
855
|
-
|
|
892
|
+
if (oldColumn.asExpression) {
|
|
893
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
894
|
+
schema: database,
|
|
895
|
+
table: tableName,
|
|
896
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
897
|
+
name: oldColumn.name,
|
|
898
|
+
value: oldColumn.asExpression,
|
|
899
|
+
});
|
|
900
|
+
downQueries.push(insertQuery);
|
|
901
|
+
}
|
|
856
902
|
}
|
|
857
903
|
else if (!oldColumn.generatedType &&
|
|
858
904
|
newColumn.generatedType) {
|
|
859
905
|
// if column changed from non-generated to generated, insert record into typeorm metadata
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
906
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
907
|
+
database ??= await this.getCurrentDatabase();
|
|
908
|
+
if (newColumn.asExpression) {
|
|
909
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
910
|
+
schema: database,
|
|
911
|
+
table: tableName,
|
|
912
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
913
|
+
name: newColumn.name,
|
|
914
|
+
value: newColumn.asExpression,
|
|
915
|
+
});
|
|
916
|
+
upQueries.push(insertQuery);
|
|
917
|
+
}
|
|
868
918
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
869
|
-
schema:
|
|
870
|
-
table:
|
|
919
|
+
schema: database,
|
|
920
|
+
table: tableName,
|
|
871
921
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
872
922
|
name: newColumn.name,
|
|
873
923
|
});
|
|
874
|
-
upQueries.push(insertQuery);
|
|
875
924
|
downQueries.push(deleteQuery);
|
|
876
925
|
}
|
|
877
926
|
else if (oldColumn.asExpression !== newColumn.asExpression) {
|
|
878
927
|
// if only expression changed, just update it in typeorm_metadata table
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
.where("`type` = :type", {
|
|
928
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
929
|
+
database ??= await this.getCurrentDatabase();
|
|
930
|
+
const updateQuery = this.updateTypeormMetadataSql({
|
|
931
|
+
schema: database,
|
|
932
|
+
table: tableName,
|
|
885
933
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
.getQueryAndParameters();
|
|
893
|
-
const revertUpdateQuery = this.dataSource
|
|
894
|
-
.createQueryBuilder()
|
|
895
|
-
.update(this.getTypeormMetadataTableName())
|
|
896
|
-
.set({ value: oldColumn.asExpression })
|
|
897
|
-
.where("`type` = :type", {
|
|
934
|
+
name: oldColumn.name,
|
|
935
|
+
valueToSet: { value: newColumn.asExpression },
|
|
936
|
+
});
|
|
937
|
+
const revertUpdateQuery = this.updateTypeormMetadataSql({
|
|
938
|
+
schema: database,
|
|
939
|
+
table: tableName,
|
|
898
940
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
.andWhere("`table` = :table", { table: table.name })
|
|
905
|
-
.getQueryAndParameters();
|
|
906
|
-
upQueries.push(new Query_1.Query(updateQuery[0], updateQuery[1]));
|
|
907
|
-
downQueries.push(new Query_1.Query(revertUpdateQuery[0], revertUpdateQuery[1]));
|
|
941
|
+
name: newColumn.name,
|
|
942
|
+
valueToSet: { value: oldColumn.asExpression },
|
|
943
|
+
});
|
|
944
|
+
upQueries.push(updateQuery);
|
|
945
|
+
downQueries.push(revertUpdateQuery);
|
|
908
946
|
}
|
|
909
947
|
}
|
|
910
948
|
if (newColumn.isPrimary !== oldColumn.isPrimary) {
|
|
@@ -1094,23 +1132,26 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1094
1132
|
}
|
|
1095
1133
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \`${column.name}\``));
|
|
1096
1134
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column, true)}`));
|
|
1097
|
-
if (column.generatedType
|
|
1098
|
-
|
|
1135
|
+
if (column.generatedType) {
|
|
1136
|
+
let { database, tableName } = this.driver.parseTableName(table);
|
|
1137
|
+
database ??= await this.getCurrentDatabase();
|
|
1099
1138
|
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1100
|
-
schema:
|
|
1101
|
-
table:
|
|
1139
|
+
schema: database,
|
|
1140
|
+
table: tableName,
|
|
1102
1141
|
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1103
1142
|
name: column.name,
|
|
1104
1143
|
});
|
|
1105
|
-
const insertQuery = this.insertTypeormMetadataSql({
|
|
1106
|
-
schema: currentDatabase,
|
|
1107
|
-
table: table.name,
|
|
1108
|
-
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1109
|
-
name: column.name,
|
|
1110
|
-
value: column.asExpression,
|
|
1111
|
-
});
|
|
1112
1144
|
upQueries.push(deleteQuery);
|
|
1113
|
-
|
|
1145
|
+
if (column.asExpression) {
|
|
1146
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1147
|
+
schema: database,
|
|
1148
|
+
table: tableName,
|
|
1149
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1150
|
+
name: column.name,
|
|
1151
|
+
value: column.asExpression,
|
|
1152
|
+
});
|
|
1153
|
+
downQueries.push(insertQuery);
|
|
1154
|
+
}
|
|
1114
1155
|
}
|
|
1115
1156
|
await this.executeQueries(upQueries, downQueries);
|
|
1116
1157
|
clonedTable.removeColumn(column);
|
|
@@ -1521,6 +1562,13 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1521
1562
|
const dropQueries = await this.query(dropTablesQuery, [dbName]);
|
|
1522
1563
|
await Promise.all(dropQueries.map((query) => this.query(query["query"])));
|
|
1523
1564
|
await this.query(enableForeignKeysCheckQuery);
|
|
1565
|
+
if (database) {
|
|
1566
|
+
const metadataTableName = this.getTypeormMetadataTableName();
|
|
1567
|
+
const hasMetadataTable = await this.hasTable(metadataTableName);
|
|
1568
|
+
if (hasMetadataTable) {
|
|
1569
|
+
await this.query(`DELETE FROM ${this.escapePath(metadataTableName)} WHERE \`schema\` = ?`, [database]);
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1524
1572
|
if (!isAnotherTransactionActive)
|
|
1525
1573
|
await this.commitTransaction();
|
|
1526
1574
|
}
|