typeorm 0.3.10 → 0.3.11-dev.1cb738a
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 +5 -3
- package/browser/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/decorator/columns/VirtualColumn.d.ts +10 -0
- package/browser/decorator/columns/VirtualColumn.js +46 -0
- package/browser/decorator/columns/VirtualColumn.js.map +1 -0
- package/browser/decorator/options/VirtualColumnOptions.d.ts +27 -0
- package/browser/decorator/options/VirtualColumnOptions.js +3 -0
- package/browser/decorator/options/VirtualColumnOptions.js.map +1 -0
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +4 -0
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +26 -7
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +5 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +8 -0
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +5 -3
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +4 -0
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +5 -3
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +4 -0
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +18 -2
- package/browser/driver/postgres/PostgresQueryRunner.js +105 -3
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +4 -4
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +4 -0
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +1 -1
- package/browser/driver/sap/SapQueryRunner.js +5 -3
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.js +4 -0
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +10 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +5 -3
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +4 -0
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +5 -3
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/find-options/FindOperatorType.d.ts +1 -1
- package/browser/find-options/FindOperatorType.js.map +1 -1
- package/browser/find-options/FindOptionsOrder.d.ts +1 -1
- package/browser/find-options/FindOptionsOrder.js.map +1 -1
- package/browser/find-options/FindOptionsRelations.d.ts +1 -1
- package/browser/find-options/FindOptionsRelations.js.map +1 -1
- package/browser/find-options/FindOptionsSelect.d.ts +1 -1
- package/browser/find-options/FindOptionsSelect.js.map +1 -1
- package/browser/find-options/FindOptionsWhere.d.ts +2 -2
- package/browser/find-options/FindOptionsWhere.js.map +1 -1
- package/browser/find-options/operator/And.d.ts +2 -0
- package/browser/find-options/operator/And.js +6 -0
- package/browser/find-options/operator/And.js.map +1 -0
- package/browser/find-options/operator/Any.d.ts +1 -1
- package/browser/find-options/operator/Any.js.map +1 -1
- package/browser/find-options/operator/ArrayContainedBy.d.ts +1 -1
- package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/browser/find-options/operator/ArrayContains.d.ts +1 -1
- package/browser/find-options/operator/ArrayContains.js.map +1 -1
- package/browser/find-options/operator/ArrayOverlap.d.ts +1 -1
- package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
- package/browser/find-options/operator/In.d.ts +1 -1
- package/browser/find-options/operator/In.js.map +1 -1
- package/browser/index.d.ts +2 -0
- package/browser/index.js +2 -0
- package/browser/index.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +12 -0
- package/browser/metadata/ColumnMetadata.js +13 -0
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata-args/types/ColumnMode.d.ts +1 -1
- package/browser/metadata-args/types/ColumnMode.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +9 -5
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +13 -3
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -1
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/query-builder/QueryBuilder.js +9 -0
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationLoader.js +1 -0
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +23 -8
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/WhereClause.d.ts +1 -1
- package/browser/query-builder/WhereClause.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +1 -1
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +1 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/Repository.d.ts +1 -1
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/TreeRepository.d.ts +0 -4
- package/browser/repository/TreeRepository.js +0 -11
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
- package/browser/schema-builder/RdbmsSchemaBuilder.js +85 -7
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/table/Table.js +1 -1
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/schema-builder/view/View.d.ts +13 -1
- package/browser/schema-builder/view/View.js +16 -0
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/util/DateUtils.js +2 -1
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/OrmUtils.js +2 -1
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/TreeRepositoryUtils.js +16 -6
- package/browser/util/TreeRepositoryUtils.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/MigrationRevertCommand.js +1 -0
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/decorator/columns/VirtualColumn.d.ts +10 -0
- package/decorator/columns/VirtualColumn.js +50 -0
- package/decorator/columns/VirtualColumn.js.map +1 -0
- package/decorator/options/VirtualColumnOptions.d.ts +27 -0
- package/decorator/options/VirtualColumnOptions.js +4 -0
- package/decorator/options/VirtualColumnOptions.js.map +1 -0
- package/driver/aurora-mysql/AuroraMysqlDriver.js +4 -0
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +26 -7
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +5 -3
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +8 -0
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +1 -1
- package/driver/mysql/MysqlQueryRunner.js +5 -3
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +4 -0
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +1 -1
- package/driver/oracle/OracleQueryRunner.js +5 -3
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +4 -0
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +18 -2
- package/driver/postgres/PostgresQueryRunner.js +105 -3
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +4 -4
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.js +4 -0
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +1 -1
- package/driver/sap/SapQueryRunner.js +5 -3
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDriver.js +4 -0
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +10 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +5 -3
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js +4 -0
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +5 -3
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/find-options/FindOperatorType.d.ts +1 -1
- package/find-options/FindOperatorType.js.map +1 -1
- package/find-options/FindOptionsOrder.d.ts +1 -1
- package/find-options/FindOptionsOrder.js.map +1 -1
- package/find-options/FindOptionsRelations.d.ts +1 -1
- package/find-options/FindOptionsRelations.js.map +1 -1
- package/find-options/FindOptionsSelect.d.ts +1 -1
- package/find-options/FindOptionsSelect.js.map +1 -1
- package/find-options/FindOptionsWhere.d.ts +2 -2
- package/find-options/FindOptionsWhere.js.map +1 -1
- package/find-options/operator/And.d.ts +2 -0
- package/find-options/operator/And.js +10 -0
- package/find-options/operator/And.js.map +1 -0
- package/find-options/operator/Any.d.ts +1 -1
- package/find-options/operator/Any.js.map +1 -1
- package/find-options/operator/ArrayContainedBy.d.ts +1 -1
- package/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/find-options/operator/ArrayContains.d.ts +1 -1
- package/find-options/operator/ArrayContains.js.map +1 -1
- package/find-options/operator/ArrayOverlap.d.ts +1 -1
- package/find-options/operator/ArrayOverlap.js.map +1 -1
- package/find-options/operator/In.d.ts +1 -1
- package/find-options/operator/In.js.map +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/index.mjs +4 -0
- package/metadata/ColumnMetadata.d.ts +12 -0
- package/metadata/ColumnMetadata.js +13 -0
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata-args/types/ColumnMode.d.ts +1 -1
- package/metadata-args/types/ColumnMode.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +9 -5
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/migration/MigrationExecutor.js +13 -3
- package/migration/MigrationExecutor.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.d.ts +2 -1
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +1 -274
- package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
- package/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/query-builder/QueryBuilder.js +9 -0
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/RelationLoader.js +1 -0
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/SelectQueryBuilder.js +23 -8
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/WhereClause.d.ts +1 -1
- package/query-builder/WhereClause.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +1 -1
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +1 -1
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/Repository.d.ts +1 -1
- package/repository/Repository.js.map +1 -1
- package/repository/TreeRepository.d.ts +0 -4
- package/repository/TreeRepository.js +0 -11
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
- package/schema-builder/RdbmsSchemaBuilder.js +85 -7
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/table/Table.js +1 -1
- package/schema-builder/table/Table.js.map +1 -1
- package/schema-builder/view/View.d.ts +13 -1
- package/schema-builder/view/View.js +16 -0
- package/schema-builder/view/View.js.map +1 -1
- package/util/DateUtils.js +2 -1
- package/util/DateUtils.js.map +1 -1
- package/util/OrmUtils.js +2 -1
- package/util/OrmUtils.js.map +1 -1
- package/util/TreeRepositoryUtils.js +16 -6
- package/util/TreeRepositoryUtils.js.map +1 -1
|
@@ -462,13 +462,15 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
462
462
|
/**
|
|
463
463
|
* Creates a new view.
|
|
464
464
|
*/
|
|
465
|
-
async createView(view) {
|
|
465
|
+
async createView(view, syncWithMetadata = false) {
|
|
466
466
|
const upQueries = [];
|
|
467
467
|
const downQueries = [];
|
|
468
468
|
upQueries.push(this.createViewSql(view));
|
|
469
|
-
|
|
469
|
+
if (syncWithMetadata)
|
|
470
|
+
upQueries.push(await this.insertViewDefinitionSql(view));
|
|
470
471
|
downQueries.push(this.dropViewSql(view));
|
|
471
|
-
|
|
472
|
+
if (syncWithMetadata)
|
|
473
|
+
downQueries.push(await this.deleteViewDefinitionSql(view));
|
|
472
474
|
await this.executeQueries(upQueries, downQueries);
|
|
473
475
|
}
|
|
474
476
|
/**
|
|
@@ -1446,6 +1448,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1446
1448
|
: table.foreignKeys.find((fk) => fk.name === foreignKeyOrName);
|
|
1447
1449
|
if (!foreignKey)
|
|
1448
1450
|
throw new TypeORMError(`Supplied foreign key was not found in table ${table.name}`);
|
|
1451
|
+
if (!foreignKey.name) {
|
|
1452
|
+
foreignKey.name = this.connection.namingStrategy.foreignKeyName(table, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
1453
|
+
}
|
|
1449
1454
|
const up = this.dropForeignKeySql(table, foreignKey);
|
|
1450
1455
|
const down = this.createForeignKeySql(table, foreignKey);
|
|
1451
1456
|
await this.executeQueries(up, down);
|
|
@@ -1474,6 +1479,21 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1474
1479
|
await this.executeQueries(up, down);
|
|
1475
1480
|
table.addIndex(index);
|
|
1476
1481
|
}
|
|
1482
|
+
/**
|
|
1483
|
+
* Create a new view index.
|
|
1484
|
+
*/
|
|
1485
|
+
async createViewIndex(viewOrName, index) {
|
|
1486
|
+
const view = InstanceChecker.isView(viewOrName)
|
|
1487
|
+
? viewOrName
|
|
1488
|
+
: await this.getCachedView(viewOrName);
|
|
1489
|
+
// new index may be passed without name. In this case we generate index name manually.
|
|
1490
|
+
if (!index.name)
|
|
1491
|
+
index.name = this.generateIndexName(view, index);
|
|
1492
|
+
const up = this.createViewIndexSql(view, index);
|
|
1493
|
+
const down = this.dropIndexSql(view, index);
|
|
1494
|
+
await this.executeQueries(up, down);
|
|
1495
|
+
view.addIndex(index);
|
|
1496
|
+
}
|
|
1477
1497
|
/**
|
|
1478
1498
|
* Creates a new indices
|
|
1479
1499
|
*/
|
|
@@ -1482,6 +1502,14 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1482
1502
|
await this.createIndex(tableOrName, index);
|
|
1483
1503
|
}
|
|
1484
1504
|
}
|
|
1505
|
+
/**
|
|
1506
|
+
* Creates new view indices
|
|
1507
|
+
*/
|
|
1508
|
+
async createViewIndices(viewOrName, indices) {
|
|
1509
|
+
for (const index of indices) {
|
|
1510
|
+
await this.createViewIndex(viewOrName, index);
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1485
1513
|
/**
|
|
1486
1514
|
* Drops an index from the table.
|
|
1487
1515
|
*/
|
|
@@ -1502,6 +1530,26 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1502
1530
|
await this.executeQueries(up, down);
|
|
1503
1531
|
table.removeIndex(index);
|
|
1504
1532
|
}
|
|
1533
|
+
/**
|
|
1534
|
+
* Drops an index from a view.
|
|
1535
|
+
*/
|
|
1536
|
+
async dropViewIndex(viewOrName, indexOrName) {
|
|
1537
|
+
const view = InstanceChecker.isView(viewOrName)
|
|
1538
|
+
? viewOrName
|
|
1539
|
+
: await this.getCachedView(viewOrName);
|
|
1540
|
+
const index = InstanceChecker.isTableIndex(indexOrName)
|
|
1541
|
+
? indexOrName
|
|
1542
|
+
: view.indices.find((i) => i.name === indexOrName);
|
|
1543
|
+
if (!index)
|
|
1544
|
+
throw new TypeORMError(`Supplied index ${indexOrName} was not found in view ${view.name}`);
|
|
1545
|
+
// old index may be passed without name. In this case we generate index name manually.
|
|
1546
|
+
if (!index.name)
|
|
1547
|
+
index.name = this.generateIndexName(view, index);
|
|
1548
|
+
const up = this.dropIndexSql(view, index);
|
|
1549
|
+
const down = this.createViewIndexSql(view, index);
|
|
1550
|
+
await this.executeQueries(up, down);
|
|
1551
|
+
view.removeIndex(index);
|
|
1552
|
+
}
|
|
1505
1553
|
/**
|
|
1506
1554
|
* Drops an indices from the table.
|
|
1507
1555
|
*/
|
|
@@ -1600,12 +1648,41 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1600
1648
|
return `("t"."schema" = '${schema}' AND "t"."name" = '${tableName}')`;
|
|
1601
1649
|
})
|
|
1602
1650
|
.join(" OR ");
|
|
1651
|
+
const constraintsCondition = viewNames.length === 0
|
|
1652
|
+
? "1=1"
|
|
1653
|
+
: viewNames
|
|
1654
|
+
.map((tableName) => this.driver.parseTableName(tableName))
|
|
1655
|
+
.map(({ schema, tableName }) => {
|
|
1656
|
+
if (!schema) {
|
|
1657
|
+
schema =
|
|
1658
|
+
this.driver.options.schema || currentSchema;
|
|
1659
|
+
}
|
|
1660
|
+
return `("ns"."nspname" = '${schema}' AND "t"."relname" = '${tableName}')`;
|
|
1661
|
+
})
|
|
1662
|
+
.join(" OR ");
|
|
1663
|
+
const indicesSql = `SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", ` +
|
|
1664
|
+
`CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", ` +
|
|
1665
|
+
`"types"."typname" AS "type_name" ` +
|
|
1666
|
+
`FROM "pg_class" "t" ` +
|
|
1667
|
+
`INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" ` +
|
|
1668
|
+
`INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") ` +
|
|
1669
|
+
`INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" ` +
|
|
1670
|
+
`INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" ` +
|
|
1671
|
+
`INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" ` +
|
|
1672
|
+
`LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" ` +
|
|
1673
|
+
`WHERE "t"."relkind" IN ('m') AND "cnst"."contype" IS NULL AND (${constraintsCondition})`;
|
|
1603
1674
|
const query = `SELECT "t".* FROM ${this.escapePath(this.getTypeormMetadataTableName())} "t" ` +
|
|
1604
1675
|
`INNER JOIN "pg_catalog"."pg_class" "c" ON "c"."relname" = "t"."name" ` +
|
|
1605
1676
|
`INNER JOIN "pg_namespace" "n" ON "n"."oid" = "c"."relnamespace" AND "n"."nspname" = "t"."schema" ` +
|
|
1606
1677
|
`WHERE "t"."type" IN ('${MetadataTableType.VIEW}', '${MetadataTableType.MATERIALIZED_VIEW}') ${viewsCondition ? `AND (${viewsCondition})` : ""}`;
|
|
1607
1678
|
const dbViews = await this.query(query);
|
|
1679
|
+
const dbIndices = await this.query(indicesSql);
|
|
1608
1680
|
return dbViews.map((dbView) => {
|
|
1681
|
+
// find index constraints of table, group them by constraint name and build TableIndex.
|
|
1682
|
+
const tableIndexConstraints = OrmUtils.uniq(dbIndices.filter((dbIndex) => {
|
|
1683
|
+
return (dbIndex["table_name"] === dbView["name"] &&
|
|
1684
|
+
dbIndex["table_schema"] === dbView["schema"]);
|
|
1685
|
+
}), (dbIndex) => dbIndex["constraint_name"]);
|
|
1609
1686
|
const view = new View();
|
|
1610
1687
|
const schema = dbView["schema"] === currentSchema &&
|
|
1611
1688
|
!this.driver.options.schema
|
|
@@ -1617,6 +1694,22 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1617
1694
|
view.expression = dbView["value"];
|
|
1618
1695
|
view.materialized =
|
|
1619
1696
|
dbView["type"] === MetadataTableType.MATERIALIZED_VIEW;
|
|
1697
|
+
view.indices = tableIndexConstraints.map((constraint) => {
|
|
1698
|
+
const indices = dbIndices.filter((index) => {
|
|
1699
|
+
return (index["table_schema"] === constraint["table_schema"] &&
|
|
1700
|
+
index["table_name"] === constraint["table_name"] &&
|
|
1701
|
+
index["constraint_name"] ===
|
|
1702
|
+
constraint["constraint_name"]);
|
|
1703
|
+
});
|
|
1704
|
+
return new TableIndex({
|
|
1705
|
+
view: view,
|
|
1706
|
+
name: constraint["constraint_name"],
|
|
1707
|
+
columnNames: indices.map((i) => i["column_name"]),
|
|
1708
|
+
isUnique: constraint["is_unique"] === "TRUE",
|
|
1709
|
+
where: constraint["condition"],
|
|
1710
|
+
isFulltext: false,
|
|
1711
|
+
});
|
|
1712
|
+
});
|
|
1620
1713
|
return view;
|
|
1621
1714
|
});
|
|
1622
1715
|
}
|
|
@@ -2313,6 +2406,15 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2313
2406
|
.join(", ");
|
|
2314
2407
|
return new Query(`CREATE ${index.isUnique ? "UNIQUE " : ""}INDEX "${index.name}" ON ${this.escapePath(table)} ${index.isSpatial ? "USING GiST " : ""}(${columns}) ${index.where ? "WHERE " + index.where : ""}`);
|
|
2315
2408
|
}
|
|
2409
|
+
/**
|
|
2410
|
+
* Builds create view index sql.
|
|
2411
|
+
*/
|
|
2412
|
+
createViewIndexSql(view, index) {
|
|
2413
|
+
const columns = index.columnNames
|
|
2414
|
+
.map((columnName) => `"${columnName}"`)
|
|
2415
|
+
.join(", ");
|
|
2416
|
+
return new Query(`CREATE ${index.isUnique ? "UNIQUE " : ""}INDEX "${index.name}" ON ${this.escapePath(view)} (${columns}) ${index.where ? "WHERE " + index.where : ""}`);
|
|
2417
|
+
}
|
|
2316
2418
|
/**
|
|
2317
2419
|
* Builds drop index sql.
|
|
2318
2420
|
*/
|