typeorm 0.3.11-dev.66acec8 → 0.3.11-dev.6ba48bd

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.
Files changed (259) hide show
  1. package/README.md +3 -3
  2. package/browser/decorator/options/JoinTableMultipleColumnsOptions.d.ts +6 -0
  3. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  4. package/browser/decorator/options/JoinTableOptions.d.ts +6 -0
  5. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  6. package/browser/decorator/relations/JoinTable.js +1 -0
  7. package/browser/decorator/relations/JoinTable.js.map +1 -1
  8. package/browser/driver/Driver.d.ts +4 -0
  9. package/browser/driver/Driver.js.map +1 -1
  10. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +21 -4
  11. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  12. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
  13. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  14. package/browser/driver/cordova/CordovaDriver.d.ts +1 -0
  15. package/browser/driver/cordova/CordovaDriver.js +1 -0
  16. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  17. package/browser/driver/oracle/OracleDriver.d.ts +1 -0
  18. package/browser/driver/oracle/OracleDriver.js +1 -0
  19. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  20. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  21. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  22. package/browser/driver/postgres/PostgresDriver.js +11 -1
  23. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  24. package/browser/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  25. package/browser/driver/postgres/PostgresQueryRunner.js +100 -0
  26. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  27. package/browser/driver/react-native/ReactNativeQueryRunner.js +4 -4
  28. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  29. package/browser/driver/sap/SapDriver.d.ts +1 -0
  30. package/browser/driver/sap/SapDriver.js +1 -0
  31. package/browser/driver/sap/SapDriver.js.map +1 -1
  32. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  33. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  34. package/browser/driver/sqlite/SqliteDriver.js +18 -6
  35. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  36. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +6 -0
  37. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  38. package/browser/entity-manager/EntityManager.d.ts +4 -0
  39. package/browser/entity-manager/EntityManager.js +14 -1
  40. package/browser/entity-manager/EntityManager.js.map +1 -1
  41. package/browser/error/ForbiddenTransactionModeOverrideError.d.ts +8 -0
  42. package/browser/error/ForbiddenTransactionModeOverrideError.js +12 -0
  43. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -0
  44. package/browser/error/index.d.ts +1 -0
  45. package/browser/error/index.js +1 -0
  46. package/browser/error/index.js.map +1 -1
  47. package/browser/find-options/FindOperatorType.d.ts +1 -1
  48. package/browser/find-options/FindOperatorType.js.map +1 -1
  49. package/browser/find-options/FindOptionsOrder.d.ts +1 -1
  50. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  51. package/browser/find-options/FindOptionsRelations.d.ts +1 -1
  52. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  53. package/browser/find-options/FindOptionsSelect.d.ts +1 -1
  54. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  55. package/browser/find-options/FindOptionsWhere.d.ts +2 -2
  56. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  57. package/browser/find-options/operator/And.d.ts +2 -0
  58. package/browser/find-options/operator/And.js +6 -0
  59. package/browser/find-options/operator/And.js.map +1 -0
  60. package/browser/find-options/operator/Any.d.ts +1 -1
  61. package/browser/find-options/operator/Any.js.map +1 -1
  62. package/browser/find-options/operator/ArrayContainedBy.d.ts +1 -1
  63. package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
  64. package/browser/find-options/operator/ArrayContains.d.ts +1 -1
  65. package/browser/find-options/operator/ArrayContains.js.map +1 -1
  66. package/browser/find-options/operator/ArrayOverlap.d.ts +1 -1
  67. package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
  68. package/browser/find-options/operator/In.d.ts +1 -1
  69. package/browser/find-options/operator/In.js.map +1 -1
  70. package/browser/index.d.ts +1 -0
  71. package/browser/index.js +1 -0
  72. package/browser/index.js.map +1 -1
  73. package/browser/metadata-args/JoinTableMetadataArgs.d.ts +6 -0
  74. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  75. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
  76. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  77. package/browser/migration/Migration.d.ts +5 -1
  78. package/browser/migration/Migration.js +2 -1
  79. package/browser/migration/Migration.js.map +1 -1
  80. package/browser/migration/MigrationExecutor.js +39 -6
  81. package/browser/migration/MigrationExecutor.js.map +1 -1
  82. package/browser/migration/MigrationInterface.d.ts +7 -0
  83. package/browser/migration/MigrationInterface.js.map +1 -1
  84. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  85. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  86. package/browser/persistence/EntityPersistExecutor.js +2 -1
  87. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  88. package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
  89. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
  90. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  91. package/browser/query-builder/InsertOrUpdateOptions.d.ts +7 -0
  92. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  93. package/browser/query-builder/InsertQueryBuilder.js +10 -1
  94. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  95. package/browser/query-builder/QueryBuilder.d.ts +1 -0
  96. package/browser/query-builder/QueryBuilder.js +22 -0
  97. package/browser/query-builder/QueryBuilder.js.map +1 -1
  98. package/browser/query-builder/QueryExpressionMap.d.ts +1 -0
  99. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  100. package/browser/query-builder/RelationLoader.js +1 -0
  101. package/browser/query-builder/RelationLoader.js.map +1 -1
  102. package/browser/query-builder/SelectQueryBuilder.d.ts +19 -0
  103. package/browser/query-builder/SelectQueryBuilder.js +76 -8
  104. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  105. package/browser/query-builder/WhereClause.d.ts +1 -1
  106. package/browser/query-builder/WhereClause.js.map +1 -1
  107. package/browser/query-runner/BaseQueryRunner.d.ts +1 -1
  108. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  109. package/browser/repository/Repository.d.ts +5 -1
  110. package/browser/repository/Repository.js +6 -0
  111. package/browser/repository/Repository.js.map +1 -1
  112. package/browser/repository/TreeRepository.d.ts +0 -4
  113. package/browser/repository/TreeRepository.js +0 -11
  114. package/browser/repository/TreeRepository.js.map +1 -1
  115. package/browser/repository/UpsertOptions.d.ts +5 -2
  116. package/browser/repository/UpsertOptions.js.map +1 -1
  117. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  118. package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -2
  119. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  120. package/browser/schema-builder/view/View.d.ts +13 -1
  121. package/browser/schema-builder/view/View.js +16 -0
  122. package/browser/schema-builder/view/View.js.map +1 -1
  123. package/browser/util/OrmUtils.js +2 -1
  124. package/browser/util/OrmUtils.js.map +1 -1
  125. package/browser/util/TreeRepositoryUtils.js +16 -6
  126. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  127. package/commands/InitCommand.js +32 -5
  128. package/commands/InitCommand.js.map +1 -1
  129. package/commands/MigrationGenerateCommand.js +1 -0
  130. package/commands/MigrationGenerateCommand.js.map +1 -1
  131. package/commands/MigrationRevertCommand.js +1 -0
  132. package/commands/MigrationRevertCommand.js.map +1 -1
  133. package/decorator/options/JoinTableMultipleColumnsOptions.d.ts +6 -0
  134. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  135. package/decorator/options/JoinTableOptions.d.ts +6 -0
  136. package/decorator/options/JoinTableOptions.js.map +1 -1
  137. package/decorator/relations/JoinTable.js +1 -0
  138. package/decorator/relations/JoinTable.js.map +1 -1
  139. package/driver/Driver.d.ts +4 -0
  140. package/driver/Driver.js.map +1 -1
  141. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +21 -4
  142. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  143. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
  144. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  145. package/driver/cordova/CordovaDriver.d.ts +1 -0
  146. package/driver/cordova/CordovaDriver.js +1 -0
  147. package/driver/cordova/CordovaDriver.js.map +1 -1
  148. package/driver/oracle/OracleDriver.d.ts +1 -0
  149. package/driver/oracle/OracleDriver.js +1 -0
  150. package/driver/oracle/OracleDriver.js.map +1 -1
  151. package/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  152. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  153. package/driver/postgres/PostgresDriver.js +11 -1
  154. package/driver/postgres/PostgresDriver.js.map +1 -1
  155. package/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  156. package/driver/postgres/PostgresQueryRunner.js +100 -0
  157. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  158. package/driver/react-native/ReactNativeQueryRunner.js +4 -4
  159. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  160. package/driver/sap/SapDriver.d.ts +1 -0
  161. package/driver/sap/SapDriver.js +1 -0
  162. package/driver/sap/SapDriver.js.map +1 -1
  163. package/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  164. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  165. package/driver/sqlite/SqliteDriver.js +18 -6
  166. package/driver/sqlite/SqliteDriver.js.map +1 -1
  167. package/driver/sqlite-abstract/AbstractSqliteDriver.js +6 -0
  168. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  169. package/entity-manager/EntityManager.d.ts +4 -0
  170. package/entity-manager/EntityManager.js +14 -1
  171. package/entity-manager/EntityManager.js.map +1 -1
  172. package/error/ForbiddenTransactionModeOverrideError.d.ts +8 -0
  173. package/error/ForbiddenTransactionModeOverrideError.js +16 -0
  174. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -0
  175. package/error/index.d.ts +1 -0
  176. package/error/index.js +1 -0
  177. package/error/index.js.map +1 -1
  178. package/find-options/FindOperatorType.d.ts +1 -1
  179. package/find-options/FindOperatorType.js.map +1 -1
  180. package/find-options/FindOptionsOrder.d.ts +1 -1
  181. package/find-options/FindOptionsOrder.js.map +1 -1
  182. package/find-options/FindOptionsRelations.d.ts +1 -1
  183. package/find-options/FindOptionsRelations.js.map +1 -1
  184. package/find-options/FindOptionsSelect.d.ts +1 -1
  185. package/find-options/FindOptionsSelect.js.map +1 -1
  186. package/find-options/FindOptionsWhere.d.ts +2 -2
  187. package/find-options/FindOptionsWhere.js.map +1 -1
  188. package/find-options/operator/And.d.ts +2 -0
  189. package/find-options/operator/And.js +10 -0
  190. package/find-options/operator/And.js.map +1 -0
  191. package/find-options/operator/Any.d.ts +1 -1
  192. package/find-options/operator/Any.js.map +1 -1
  193. package/find-options/operator/ArrayContainedBy.d.ts +1 -1
  194. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  195. package/find-options/operator/ArrayContains.d.ts +1 -1
  196. package/find-options/operator/ArrayContains.js.map +1 -1
  197. package/find-options/operator/ArrayOverlap.d.ts +1 -1
  198. package/find-options/operator/ArrayOverlap.js.map +1 -1
  199. package/find-options/operator/In.d.ts +1 -1
  200. package/find-options/operator/In.js.map +1 -1
  201. package/index.d.ts +1 -0
  202. package/index.js +1 -0
  203. package/index.js.map +1 -1
  204. package/index.mjs +4 -0
  205. package/metadata-args/JoinTableMetadataArgs.d.ts +6 -0
  206. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  207. package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
  208. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  209. package/migration/Migration.d.ts +5 -1
  210. package/migration/Migration.js +2 -1
  211. package/migration/Migration.js.map +1 -1
  212. package/migration/MigrationExecutor.js +38 -5
  213. package/migration/MigrationExecutor.js.map +1 -1
  214. package/migration/MigrationInterface.d.ts +7 -0
  215. package/migration/MigrationInterface.js.map +1 -1
  216. package/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  217. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  218. package/package.json +1 -1
  219. package/persistence/EntityPersistExecutor.js +2 -1
  220. package/persistence/EntityPersistExecutor.js.map +1 -1
  221. package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
  222. package/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
  223. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  224. package/query-builder/InsertOrUpdateOptions.d.ts +7 -0
  225. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  226. package/query-builder/InsertQueryBuilder.js +10 -1
  227. package/query-builder/InsertQueryBuilder.js.map +1 -1
  228. package/query-builder/QueryBuilder.d.ts +1 -0
  229. package/query-builder/QueryBuilder.js +22 -0
  230. package/query-builder/QueryBuilder.js.map +1 -1
  231. package/query-builder/QueryExpressionMap.d.ts +1 -0
  232. package/query-builder/QueryExpressionMap.js.map +1 -1
  233. package/query-builder/RelationLoader.js +1 -0
  234. package/query-builder/RelationLoader.js.map +1 -1
  235. package/query-builder/SelectQueryBuilder.d.ts +19 -0
  236. package/query-builder/SelectQueryBuilder.js +76 -8
  237. package/query-builder/SelectQueryBuilder.js.map +1 -1
  238. package/query-builder/WhereClause.d.ts +1 -1
  239. package/query-builder/WhereClause.js.map +1 -1
  240. package/query-runner/BaseQueryRunner.d.ts +1 -1
  241. package/query-runner/BaseQueryRunner.js.map +1 -1
  242. package/repository/Repository.d.ts +5 -1
  243. package/repository/Repository.js +6 -0
  244. package/repository/Repository.js.map +1 -1
  245. package/repository/TreeRepository.d.ts +0 -4
  246. package/repository/TreeRepository.js +0 -11
  247. package/repository/TreeRepository.js.map +1 -1
  248. package/repository/UpsertOptions.d.ts +5 -2
  249. package/repository/UpsertOptions.js.map +1 -1
  250. package/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  251. package/schema-builder/RdbmsSchemaBuilder.js +74 -2
  252. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  253. package/schema-builder/view/View.d.ts +13 -1
  254. package/schema-builder/view/View.js +16 -0
  255. package/schema-builder/view/View.js.map +1 -1
  256. package/util/OrmUtils.js +2 -1
  257. package/util/OrmUtils.js.map +1 -1
  258. package/util/TreeRepositoryUtils.js +16 -6
  259. package/util/TreeRepositoryUtils.js.map +1 -1
@@ -1451,6 +1451,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1451
1451
  : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName);
1452
1452
  if (!foreignKey)
1453
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
+ }
1454
1457
  const up = this.dropForeignKeySql(table, foreignKey);
1455
1458
  const down = this.createForeignKeySql(table, foreignKey);
1456
1459
  await this.executeQueries(up, down);
@@ -1479,6 +1482,21 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1479
1482
  await this.executeQueries(up, down);
1480
1483
  table.addIndex(index);
1481
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
+ }
1482
1500
  /**
1483
1501
  * Creates a new indices
1484
1502
  */
@@ -1487,6 +1505,14 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1487
1505
  await this.createIndex(tableOrName, index);
1488
1506
  }
1489
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
+ }
1490
1516
  /**
1491
1517
  * Drops an index from the table.
1492
1518
  */
@@ -1507,6 +1533,26 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1507
1533
  await this.executeQueries(up, down);
1508
1534
  table.removeIndex(index);
1509
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
+ }
1510
1556
  /**
1511
1557
  * Drops an indices from the table.
1512
1558
  */
@@ -1605,12 +1651,41 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1605
1651
  return `("t"."schema" = '${schema}' AND "t"."name" = '${tableName}')`;
1606
1652
  })
1607
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})`;
1608
1677
  const query = `SELECT "t".* FROM ${this.escapePath(this.getTypeormMetadataTableName())} "t" ` +
1609
1678
  `INNER JOIN "pg_catalog"."pg_class" "c" ON "c"."relname" = "t"."name" ` +
1610
1679
  `INNER JOIN "pg_namespace" "n" ON "n"."oid" = "c"."relnamespace" AND "n"."nspname" = "t"."schema" ` +
1611
1680
  `WHERE "t"."type" IN ('${MetadataTableType_1.MetadataTableType.VIEW}', '${MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW}') ${viewsCondition ? `AND (${viewsCondition})` : ""}`;
1612
1681
  const dbViews = await this.query(query);
1682
+ const dbIndices = await this.query(indicesSql);
1613
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"]);
1614
1689
  const view = new View_1.View();
1615
1690
  const schema = dbView["schema"] === currentSchema &&
1616
1691
  !this.driver.options.schema
@@ -1622,6 +1697,22 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1622
1697
  view.expression = dbView["value"];
1623
1698
  view.materialized =
1624
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
+ });
1625
1716
  return view;
1626
1717
  });
1627
1718
  }
@@ -2318,6 +2409,15 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2318
2409
  .join(", ");
2319
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 : ""}`);
2320
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
+ }
2321
2421
  /**
2322
2422
  * Builds drop index sql.
2323
2423
  */