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
|
@@ -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
|
-
|
|
436
|
-
const
|
|
437
|
-
|
|
438
|
-
const
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
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
|
|
512
|
-
|
|
513
|
-
const
|
|
514
|
-
|
|
515
|
-
const
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
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
|
-
|
|
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
|
|
743
|
-
|
|
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
|
|
1308
|
-
|
|
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
|
-
|
|
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);
|