typeorm 0.3.5 → 0.3.6-dev.2d8afbe
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/README.md +33 -13
- package/browser/cache/DbQueryResultCache.js +9 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +3 -0
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/data-source/BaseDataSourceOptions.d.ts +1 -2
- package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
- package/browser/data-source/DataSourceOptions.d.ts +2 -1
- package/browser/data-source/DataSourceOptions.js.map +1 -1
- package/browser/decorator/Index.js +1 -0
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.js +4 -1
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +3 -2
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/IndexOptions.d.ts +8 -0
- package/browser/decorator/options/IndexOptions.js.map +1 -1
- package/browser/driver/DriverFactory.js +4 -0
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +133 -11
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
- package/browser/driver/mysql/MysqlDriver.js +94 -23
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +203 -24
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +79 -15
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +118 -21
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +95 -18
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +60 -38
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
- package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
- package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
- package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
- package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
- package/browser/driver/spanner/SpannerDriver.js +604 -0
- package/browser/driver/spanner/SpannerDriver.js.map +1 -0
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
- package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +153 -17
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/DatabaseType.d.ts +1 -1
- package/browser/driver/types/DatabaseType.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
- package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/find-options/FindOneOptions.d.ts +1 -1
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.d.ts +2 -1
- package/browser/find-options/FindOptionsUtils.js +2 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
- package/browser/logger/AdvancedConsoleLogger.js +1 -1
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +2 -2
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.d.ts +8 -0
- package/browser/metadata/IndexMetadata.js +9 -0
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
- package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +8 -0
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/platform/PlatformTools.js +5 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +15 -3
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +25 -4
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +18 -7
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
- package/browser/query-runner/BaseQueryRunner.js +25 -1
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
- package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.d.ts +2 -2
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.d.ts +2 -2
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.d.ts +8 -0
- package/browser/schema-builder/table/TableIndex.js +3 -0
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/cache/DbQueryResultCache.js +9 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.js +3 -0
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli-ts-node-commonjs.js +0 -0
- package/cli-ts-node-esm.js +0 -0
- package/cli.js +0 -0
- package/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- package/data-source/BaseDataSourceOptions.d.ts +1 -2
- package/data-source/BaseDataSourceOptions.js.map +1 -1
- package/data-source/DataSourceOptions.d.ts +2 -1
- package/data-source/DataSourceOptions.js.map +1 -1
- package/decorator/Index.js +1 -0
- package/decorator/Index.js.map +1 -1
- package/decorator/columns/PrimaryColumn.js +4 -1
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +3 -2
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/IndexOptions.d.ts +8 -0
- package/decorator/options/IndexOptions.js.map +1 -1
- package/driver/DriverFactory.js +4 -0
- package/driver/DriverFactory.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +4 -1
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +133 -11
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +1 -0
- package/driver/mysql/MysqlDriver.js +94 -23
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +203 -24
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +79 -15
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +118 -21
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +95 -18
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +60 -38
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
- package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
- package/driver/spanner/SpannerConnectionOptions.js +4 -0
- package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
- package/driver/spanner/SpannerDriver.d.ts +241 -0
- package/driver/spanner/SpannerDriver.js +608 -0
- package/driver/spanner/SpannerDriver.js.map +1 -0
- package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
- package/driver/spanner/SpannerQueryRunner.js +1449 -0
- package/driver/spanner/SpannerQueryRunner.js.map +1 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
- package/driver/sqlserver/SqlServerDriver.js +99 -26
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +153 -17
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/DatabaseType.d.ts +1 -1
- package/driver/types/DatabaseType.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
- package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +1 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/find-options/FindOneOptions.d.ts +1 -1
- package/find-options/FindOneOptions.js.map +1 -1
- package/find-options/FindOptionsUtils.d.ts +2 -1
- package/find-options/FindOptionsUtils.js +2 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/logger/AdvancedConsoleLogger.d.ts +1 -1
- package/logger/AdvancedConsoleLogger.js +1 -1
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +2 -2
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/IndexMetadata.d.ts +8 -0
- package/metadata/IndexMetadata.js +9 -0
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata-args/IndexMetadataArgs.d.ts +8 -0
- package/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +8 -0
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/package.json +1 -261
- package/platform/PlatformTools.js +5 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +15 -3
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +1 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/query-builder/SelectQueryBuilder.js +25 -4
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +18 -7
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +10 -0
- package/query-runner/BaseQueryRunner.js +25 -1
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
- package/schema-builder/RdbmsSchemaBuilder.js +26 -6
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.d.ts +2 -2
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.d.ts +8 -0
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/table/TableColumn.d.ts +2 -2
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableIndex.d.ts +8 -0
- package/schema-builder/table/TableIndex.js +3 -0
- package/schema-builder/table/TableIndex.js.map +1 -1
|
@@ -180,7 +180,7 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
180
180
|
const tableName = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
181
181
|
? tableOrName.name
|
|
182
182
|
: tableOrName;
|
|
183
|
-
const sql = `PRAGMA
|
|
183
|
+
const sql = `PRAGMA table_xinfo(${this.escapePath(tableName)})`;
|
|
184
184
|
const columns = await this.query(sql);
|
|
185
185
|
return !!columns.find((column) => column["name"] === columnName);
|
|
186
186
|
}
|
|
@@ -230,6 +230,23 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
230
230
|
downQueries.push(this.dropIndexSql(index));
|
|
231
231
|
});
|
|
232
232
|
}
|
|
233
|
+
// if table have column with generated type, we must add the expression to the metadata table
|
|
234
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
235
|
+
for (const column of generatedColumns) {
|
|
236
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
237
|
+
table: table.name,
|
|
238
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
239
|
+
name: column.name,
|
|
240
|
+
value: column.asExpression,
|
|
241
|
+
});
|
|
242
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
243
|
+
table: table.name,
|
|
244
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
245
|
+
name: column.name,
|
|
246
|
+
});
|
|
247
|
+
upQueries.push(insertQuery);
|
|
248
|
+
downQueries.push(deleteQuery);
|
|
249
|
+
}
|
|
233
250
|
await this.executeQueries(upQueries, downQueries);
|
|
234
251
|
}
|
|
235
252
|
/**
|
|
@@ -256,6 +273,23 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
256
273
|
}
|
|
257
274
|
upQueries.push(this.dropTableSql(table, ifExist));
|
|
258
275
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
276
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
277
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
278
|
+
for (const column of generatedColumns) {
|
|
279
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
280
|
+
table: table.name,
|
|
281
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
282
|
+
name: column.name,
|
|
283
|
+
});
|
|
284
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
285
|
+
table: table.name,
|
|
286
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
287
|
+
name: column.name,
|
|
288
|
+
value: column.asExpression,
|
|
289
|
+
});
|
|
290
|
+
upQueries.push(deleteQuery);
|
|
291
|
+
downQueries.push(insertQuery);
|
|
292
|
+
}
|
|
259
293
|
await this.executeQueries(upQueries, downQueries);
|
|
260
294
|
}
|
|
261
295
|
/**
|
|
@@ -828,7 +862,7 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
828
862
|
const sql = dbTable["sql"];
|
|
829
863
|
// load columns and indices
|
|
830
864
|
const [dbColumns, dbIndices, dbForeignKeys] = await Promise.all([
|
|
831
|
-
this.loadPragmaRecords(tablePath, `
|
|
865
|
+
this.loadPragmaRecords(tablePath, `table_xinfo`),
|
|
832
866
|
this.loadPragmaRecords(tablePath, `index_list`),
|
|
833
867
|
this.loadPragmaRecords(tablePath, `foreign_key_list`),
|
|
834
868
|
]);
|
|
@@ -860,7 +894,7 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
860
894
|
}
|
|
861
895
|
}
|
|
862
896
|
// create columns from the loaded columns
|
|
863
|
-
table.columns = dbColumns.map((dbColumn) => {
|
|
897
|
+
table.columns = await Promise.all(dbColumns.map(async (dbColumn) => {
|
|
864
898
|
const tableColumn = new TableColumn_1.TableColumn();
|
|
865
899
|
tableColumn.name = dbColumn["name"];
|
|
866
900
|
tableColumn.type = dbColumn["type"].toLowerCase();
|
|
@@ -878,6 +912,23 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
878
912
|
if (tableColumn.isGenerated) {
|
|
879
913
|
tableColumn.generationStrategy = "increment";
|
|
880
914
|
}
|
|
915
|
+
if (dbColumn["hidden"] === 2 ||
|
|
916
|
+
dbColumn["hidden"] === 3) {
|
|
917
|
+
tableColumn.generatedType =
|
|
918
|
+
dbColumn["hidden"] === 2 ? "VIRTUAL" : "STORED";
|
|
919
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
920
|
+
table: table.name,
|
|
921
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
922
|
+
name: tableColumn.name,
|
|
923
|
+
});
|
|
924
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
925
|
+
if (results[0] && results[0].value) {
|
|
926
|
+
tableColumn.asExpression = results[0].value;
|
|
927
|
+
}
|
|
928
|
+
else {
|
|
929
|
+
tableColumn.asExpression = "";
|
|
930
|
+
}
|
|
931
|
+
}
|
|
881
932
|
if (tableColumn.type === "varchar") {
|
|
882
933
|
// Check if this is an enum
|
|
883
934
|
const enumMatch = sql.match(new RegExp('"(' +
|
|
@@ -917,7 +968,7 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
917
968
|
}
|
|
918
969
|
}
|
|
919
970
|
return tableColumn;
|
|
920
|
-
});
|
|
971
|
+
}));
|
|
921
972
|
// build foreign keys
|
|
922
973
|
const tableForeignKeyConstraints = OrmUtils_1.OrmUtils.uniq(dbForeignKeys, (dbForeignKey) => dbForeignKey["id"]);
|
|
923
974
|
table.foreignKeys = tableForeignKeyConstraints.map((foreignKey) => {
|
|
@@ -1211,8 +1262,13 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1211
1262
|
c += " COLLATE " + column.collation;
|
|
1212
1263
|
if (column.isNullable !== true)
|
|
1213
1264
|
c += " NOT NULL";
|
|
1214
|
-
if (column.
|
|
1215
|
-
c +=
|
|
1265
|
+
if (column.asExpression) {
|
|
1266
|
+
c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
|
|
1267
|
+
}
|
|
1268
|
+
else {
|
|
1269
|
+
if (column.default !== undefined && column.default !== null)
|
|
1270
|
+
c += " DEFAULT (" + column.default + ")";
|
|
1271
|
+
}
|
|
1216
1272
|
return c;
|
|
1217
1273
|
}
|
|
1218
1274
|
async recreateTable(newTable, oldTable, migrateData = true) {
|
|
@@ -1233,29 +1289,31 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1233
1289
|
// migrate all data from the old table into new table
|
|
1234
1290
|
if (migrateData) {
|
|
1235
1291
|
let newColumnNames = newTable.columns
|
|
1236
|
-
.
|
|
1237
|
-
.
|
|
1292
|
+
.filter((column) => !column.generatedType)
|
|
1293
|
+
.map((column) => `"${column.name}"`);
|
|
1238
1294
|
let oldColumnNames = oldTable.columns
|
|
1239
|
-
.
|
|
1240
|
-
.
|
|
1241
|
-
if (
|
|
1295
|
+
.filter((column) => !column.generatedType)
|
|
1296
|
+
.map((column) => `"${column.name}"`);
|
|
1297
|
+
if (oldColumnNames.length < newColumnNames.length) {
|
|
1242
1298
|
newColumnNames = newTable.columns
|
|
1243
1299
|
.filter((column) => {
|
|
1244
|
-
|
|
1300
|
+
const oldColumn = oldTable.columns.find((c) => c.name === column.name);
|
|
1301
|
+
if (oldColumn && oldColumn.generatedType)
|
|
1302
|
+
return false;
|
|
1303
|
+
return !column.generatedType && oldColumn;
|
|
1245
1304
|
})
|
|
1246
|
-
.map((column) => `"${column.name}"`)
|
|
1247
|
-
.join(", ");
|
|
1305
|
+
.map((column) => `"${column.name}"`);
|
|
1248
1306
|
}
|
|
1249
|
-
else if (
|
|
1307
|
+
else if (oldColumnNames.length > newColumnNames.length) {
|
|
1250
1308
|
oldColumnNames = oldTable.columns
|
|
1251
1309
|
.filter((column) => {
|
|
1252
|
-
return
|
|
1310
|
+
return (!column.generatedType &&
|
|
1311
|
+
newTable.columns.find((c) => c.name === column.name));
|
|
1253
1312
|
})
|
|
1254
|
-
.map((column) => `"${column.name}"`)
|
|
1255
|
-
.join(", ");
|
|
1313
|
+
.map((column) => `"${column.name}"`);
|
|
1256
1314
|
}
|
|
1257
|
-
upQueries.push(new Query_1.Query(`INSERT INTO ${this.escapePath(newTable.name)}(${newColumnNames}) SELECT ${oldColumnNames} FROM ${this.escapePath(oldTable.name)}`));
|
|
1258
|
-
downQueries.push(new Query_1.Query(`INSERT INTO ${this.escapePath(oldTable.name)}(${oldColumnNames}) SELECT ${newColumnNames} FROM ${this.escapePath(newTable.name)}`));
|
|
1315
|
+
upQueries.push(new Query_1.Query(`INSERT INTO ${this.escapePath(newTable.name)}(${newColumnNames.join(", ")}) SELECT ${oldColumnNames.join(", ")} FROM ${this.escapePath(oldTable.name)}`));
|
|
1316
|
+
downQueries.push(new Query_1.Query(`INSERT INTO ${this.escapePath(oldTable.name)}(${oldColumnNames.join(", ")}) SELECT ${newColumnNames.join(", ")} FROM ${this.escapePath(newTable.name)}`));
|
|
1259
1317
|
}
|
|
1260
1318
|
// drop old table
|
|
1261
1319
|
upQueries.push(this.dropTableSql(oldTable));
|
|
@@ -1272,6 +1330,93 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1272
1330
|
upQueries.push(this.createIndexSql(newTable, index));
|
|
1273
1331
|
downQueries.push(this.dropIndexSql(index));
|
|
1274
1332
|
});
|
|
1333
|
+
// update generated columns in "typeorm_metadata" table
|
|
1334
|
+
// Step 1: clear data for removed generated columns
|
|
1335
|
+
oldTable.columns
|
|
1336
|
+
.filter((column) => {
|
|
1337
|
+
const newTableColumn = newTable.columns.find((c) => c.name === column.name);
|
|
1338
|
+
// we should delete record from "typeorm_metadata" if generated column was removed
|
|
1339
|
+
// or it was changed to non-generated
|
|
1340
|
+
return (column.generatedType &&
|
|
1341
|
+
column.asExpression &&
|
|
1342
|
+
(!newTableColumn ||
|
|
1343
|
+
(!newTableColumn.generatedType &&
|
|
1344
|
+
!newTableColumn.asExpression)));
|
|
1345
|
+
})
|
|
1346
|
+
.forEach((column) => {
|
|
1347
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1348
|
+
table: oldTable.name,
|
|
1349
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1350
|
+
name: column.name,
|
|
1351
|
+
});
|
|
1352
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1353
|
+
table: oldTable.name,
|
|
1354
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1355
|
+
name: column.name,
|
|
1356
|
+
value: column.asExpression,
|
|
1357
|
+
});
|
|
1358
|
+
upQueries.push(deleteQuery);
|
|
1359
|
+
downQueries.push(insertQuery);
|
|
1360
|
+
});
|
|
1361
|
+
// Step 2: add data for new generated columns
|
|
1362
|
+
newTable.columns
|
|
1363
|
+
.filter((column) => column.generatedType &&
|
|
1364
|
+
column.asExpression &&
|
|
1365
|
+
!oldTable.columns.some((c) => c.name === column.name))
|
|
1366
|
+
.forEach((column) => {
|
|
1367
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1368
|
+
table: newTable.name,
|
|
1369
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1370
|
+
name: column.name,
|
|
1371
|
+
value: column.asExpression,
|
|
1372
|
+
});
|
|
1373
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1374
|
+
table: newTable.name,
|
|
1375
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1376
|
+
name: column.name,
|
|
1377
|
+
});
|
|
1378
|
+
upQueries.push(insertQuery);
|
|
1379
|
+
downQueries.push(deleteQuery);
|
|
1380
|
+
});
|
|
1381
|
+
// Step 3: update changed expressions
|
|
1382
|
+
newTable.columns
|
|
1383
|
+
.filter((column) => column.generatedType && column.asExpression)
|
|
1384
|
+
.forEach((column) => {
|
|
1385
|
+
const oldColumn = oldTable.columns.find((c) => c.name === column.name &&
|
|
1386
|
+
c.generatedType &&
|
|
1387
|
+
column.generatedType &&
|
|
1388
|
+
c.asExpression !== column.asExpression);
|
|
1389
|
+
if (!oldColumn)
|
|
1390
|
+
return;
|
|
1391
|
+
// update expression
|
|
1392
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1393
|
+
table: oldTable.name,
|
|
1394
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1395
|
+
name: oldColumn.name,
|
|
1396
|
+
});
|
|
1397
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1398
|
+
table: newTable.name,
|
|
1399
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1400
|
+
name: column.name,
|
|
1401
|
+
value: column.asExpression,
|
|
1402
|
+
});
|
|
1403
|
+
upQueries.push(deleteQuery);
|
|
1404
|
+
upQueries.push(insertQuery);
|
|
1405
|
+
// revert update
|
|
1406
|
+
const revertInsertQuery = this.insertTypeormMetadataSql({
|
|
1407
|
+
table: newTable.name,
|
|
1408
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1409
|
+
name: oldColumn.name,
|
|
1410
|
+
value: oldColumn.asExpression,
|
|
1411
|
+
});
|
|
1412
|
+
const revertDeleteQuery = this.deleteTypeormMetadataSql({
|
|
1413
|
+
table: oldTable.name,
|
|
1414
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1415
|
+
name: column.name,
|
|
1416
|
+
});
|
|
1417
|
+
downQueries.push(revertInsertQuery);
|
|
1418
|
+
downQueries.push(revertDeleteQuery);
|
|
1419
|
+
});
|
|
1275
1420
|
await this.executeQueries(upQueries, downQueries);
|
|
1276
1421
|
this.replaceCachedTable(oldTable, newTable);
|
|
1277
1422
|
}
|