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
|
@@ -465,13 +465,15 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
465
465
|
/**
|
|
466
466
|
* Creates a new view.
|
|
467
467
|
*/
|
|
468
|
-
async createView(view) {
|
|
468
|
+
async createView(view, syncWithMetadata = false) {
|
|
469
469
|
const upQueries = [];
|
|
470
470
|
const downQueries = [];
|
|
471
471
|
upQueries.push(this.createViewSql(view));
|
|
472
|
-
|
|
472
|
+
if (syncWithMetadata)
|
|
473
|
+
upQueries.push(await this.insertViewDefinitionSql(view));
|
|
473
474
|
downQueries.push(this.dropViewSql(view));
|
|
474
|
-
|
|
475
|
+
if (syncWithMetadata)
|
|
476
|
+
downQueries.push(await this.deleteViewDefinitionSql(view));
|
|
475
477
|
await this.executeQueries(upQueries, downQueries);
|
|
476
478
|
}
|
|
477
479
|
/**
|
|
@@ -1449,6 +1451,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1449
1451
|
: table.foreignKeys.find((fk) => fk.name === foreignKeyOrName);
|
|
1450
1452
|
if (!foreignKey)
|
|
1451
1453
|
throw new error_1.TypeORMError(`Supplied foreign key was not found in table ${table.name}`);
|
|
1454
|
+
if (!foreignKey.name) {
|
|
1455
|
+
foreignKey.name = this.connection.namingStrategy.foreignKeyName(table, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
1456
|
+
}
|
|
1452
1457
|
const up = this.dropForeignKeySql(table, foreignKey);
|
|
1453
1458
|
const down = this.createForeignKeySql(table, foreignKey);
|
|
1454
1459
|
await this.executeQueries(up, down);
|
|
@@ -1477,6 +1482,21 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1477
1482
|
await this.executeQueries(up, down);
|
|
1478
1483
|
table.addIndex(index);
|
|
1479
1484
|
}
|
|
1485
|
+
/**
|
|
1486
|
+
* Create a new view index.
|
|
1487
|
+
*/
|
|
1488
|
+
async createViewIndex(viewOrName, index) {
|
|
1489
|
+
const view = InstanceChecker_1.InstanceChecker.isView(viewOrName)
|
|
1490
|
+
? viewOrName
|
|
1491
|
+
: await this.getCachedView(viewOrName);
|
|
1492
|
+
// new index may be passed without name. In this case we generate index name manually.
|
|
1493
|
+
if (!index.name)
|
|
1494
|
+
index.name = this.generateIndexName(view, index);
|
|
1495
|
+
const up = this.createViewIndexSql(view, index);
|
|
1496
|
+
const down = this.dropIndexSql(view, index);
|
|
1497
|
+
await this.executeQueries(up, down);
|
|
1498
|
+
view.addIndex(index);
|
|
1499
|
+
}
|
|
1480
1500
|
/**
|
|
1481
1501
|
* Creates a new indices
|
|
1482
1502
|
*/
|
|
@@ -1485,6 +1505,14 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1485
1505
|
await this.createIndex(tableOrName, index);
|
|
1486
1506
|
}
|
|
1487
1507
|
}
|
|
1508
|
+
/**
|
|
1509
|
+
* Creates new view indices
|
|
1510
|
+
*/
|
|
1511
|
+
async createViewIndices(viewOrName, indices) {
|
|
1512
|
+
for (const index of indices) {
|
|
1513
|
+
await this.createViewIndex(viewOrName, index);
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1488
1516
|
/**
|
|
1489
1517
|
* Drops an index from the table.
|
|
1490
1518
|
*/
|
|
@@ -1505,6 +1533,26 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1505
1533
|
await this.executeQueries(up, down);
|
|
1506
1534
|
table.removeIndex(index);
|
|
1507
1535
|
}
|
|
1536
|
+
/**
|
|
1537
|
+
* Drops an index from a view.
|
|
1538
|
+
*/
|
|
1539
|
+
async dropViewIndex(viewOrName, indexOrName) {
|
|
1540
|
+
const view = InstanceChecker_1.InstanceChecker.isView(viewOrName)
|
|
1541
|
+
? viewOrName
|
|
1542
|
+
: await this.getCachedView(viewOrName);
|
|
1543
|
+
const index = InstanceChecker_1.InstanceChecker.isTableIndex(indexOrName)
|
|
1544
|
+
? indexOrName
|
|
1545
|
+
: view.indices.find((i) => i.name === indexOrName);
|
|
1546
|
+
if (!index)
|
|
1547
|
+
throw new error_1.TypeORMError(`Supplied index ${indexOrName} was not found in view ${view.name}`);
|
|
1548
|
+
// old index may be passed without name. In this case we generate index name manually.
|
|
1549
|
+
if (!index.name)
|
|
1550
|
+
index.name = this.generateIndexName(view, index);
|
|
1551
|
+
const up = this.dropIndexSql(view, index);
|
|
1552
|
+
const down = this.createViewIndexSql(view, index);
|
|
1553
|
+
await this.executeQueries(up, down);
|
|
1554
|
+
view.removeIndex(index);
|
|
1555
|
+
}
|
|
1508
1556
|
/**
|
|
1509
1557
|
* Drops an indices from the table.
|
|
1510
1558
|
*/
|
|
@@ -1603,12 +1651,41 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1603
1651
|
return `("t"."schema" = '${schema}' AND "t"."name" = '${tableName}')`;
|
|
1604
1652
|
})
|
|
1605
1653
|
.join(" OR ");
|
|
1654
|
+
const constraintsCondition = viewNames.length === 0
|
|
1655
|
+
? "1=1"
|
|
1656
|
+
: viewNames
|
|
1657
|
+
.map((tableName) => this.driver.parseTableName(tableName))
|
|
1658
|
+
.map(({ schema, tableName }) => {
|
|
1659
|
+
if (!schema) {
|
|
1660
|
+
schema =
|
|
1661
|
+
this.driver.options.schema || currentSchema;
|
|
1662
|
+
}
|
|
1663
|
+
return `("ns"."nspname" = '${schema}' AND "t"."relname" = '${tableName}')`;
|
|
1664
|
+
})
|
|
1665
|
+
.join(" OR ");
|
|
1666
|
+
const indicesSql = `SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", ` +
|
|
1667
|
+
`CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", ` +
|
|
1668
|
+
`"types"."typname" AS "type_name" ` +
|
|
1669
|
+
`FROM "pg_class" "t" ` +
|
|
1670
|
+
`INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" ` +
|
|
1671
|
+
`INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") ` +
|
|
1672
|
+
`INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" ` +
|
|
1673
|
+
`INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" ` +
|
|
1674
|
+
`INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" ` +
|
|
1675
|
+
`LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" ` +
|
|
1676
|
+
`WHERE "t"."relkind" IN ('m') AND "cnst"."contype" IS NULL AND (${constraintsCondition})`;
|
|
1606
1677
|
const query = `SELECT "t".* FROM ${this.escapePath(this.getTypeormMetadataTableName())} "t" ` +
|
|
1607
1678
|
`INNER JOIN "pg_catalog"."pg_class" "c" ON "c"."relname" = "t"."name" ` +
|
|
1608
1679
|
`INNER JOIN "pg_namespace" "n" ON "n"."oid" = "c"."relnamespace" AND "n"."nspname" = "t"."schema" ` +
|
|
1609
1680
|
`WHERE "t"."type" IN ('${MetadataTableType_1.MetadataTableType.VIEW}', '${MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW}') ${viewsCondition ? `AND (${viewsCondition})` : ""}`;
|
|
1610
1681
|
const dbViews = await this.query(query);
|
|
1682
|
+
const dbIndices = await this.query(indicesSql);
|
|
1611
1683
|
return dbViews.map((dbView) => {
|
|
1684
|
+
// find index constraints of table, group them by constraint name and build TableIndex.
|
|
1685
|
+
const tableIndexConstraints = OrmUtils_1.OrmUtils.uniq(dbIndices.filter((dbIndex) => {
|
|
1686
|
+
return (dbIndex["table_name"] === dbView["name"] &&
|
|
1687
|
+
dbIndex["table_schema"] === dbView["schema"]);
|
|
1688
|
+
}), (dbIndex) => dbIndex["constraint_name"]);
|
|
1612
1689
|
const view = new View_1.View();
|
|
1613
1690
|
const schema = dbView["schema"] === currentSchema &&
|
|
1614
1691
|
!this.driver.options.schema
|
|
@@ -1620,6 +1697,22 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1620
1697
|
view.expression = dbView["value"];
|
|
1621
1698
|
view.materialized =
|
|
1622
1699
|
dbView["type"] === MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW;
|
|
1700
|
+
view.indices = tableIndexConstraints.map((constraint) => {
|
|
1701
|
+
const indices = dbIndices.filter((index) => {
|
|
1702
|
+
return (index["table_schema"] === constraint["table_schema"] &&
|
|
1703
|
+
index["table_name"] === constraint["table_name"] &&
|
|
1704
|
+
index["constraint_name"] ===
|
|
1705
|
+
constraint["constraint_name"]);
|
|
1706
|
+
});
|
|
1707
|
+
return new TableIndex_1.TableIndex({
|
|
1708
|
+
view: view,
|
|
1709
|
+
name: constraint["constraint_name"],
|
|
1710
|
+
columnNames: indices.map((i) => i["column_name"]),
|
|
1711
|
+
isUnique: constraint["is_unique"] === "TRUE",
|
|
1712
|
+
where: constraint["condition"],
|
|
1713
|
+
isFulltext: false,
|
|
1714
|
+
});
|
|
1715
|
+
});
|
|
1623
1716
|
return view;
|
|
1624
1717
|
});
|
|
1625
1718
|
}
|
|
@@ -2316,6 +2409,15 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
2316
2409
|
.join(", ");
|
|
2317
2410
|
return new Query_1.Query(`CREATE ${index.isUnique ? "UNIQUE " : ""}INDEX "${index.name}" ON ${this.escapePath(table)} ${index.isSpatial ? "USING GiST " : ""}(${columns}) ${index.where ? "WHERE " + index.where : ""}`);
|
|
2318
2411
|
}
|
|
2412
|
+
/**
|
|
2413
|
+
* Builds create view index sql.
|
|
2414
|
+
*/
|
|
2415
|
+
createViewIndexSql(view, index) {
|
|
2416
|
+
const columns = index.columnNames
|
|
2417
|
+
.map((columnName) => `"${columnName}"`)
|
|
2418
|
+
.join(", ");
|
|
2419
|
+
return new Query_1.Query(`CREATE ${index.isUnique ? "UNIQUE " : ""}INDEX "${index.name}" ON ${this.escapePath(view)} (${columns}) ${index.where ? "WHERE " + index.where : ""}`);
|
|
2420
|
+
}
|
|
2319
2421
|
/**
|
|
2320
2422
|
* Builds drop index sql.
|
|
2321
2423
|
*/
|