typeorm 0.3.11-dev.fc3b4f8 → 0.3.11

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 (171) hide show
  1. package/browser/cli-ts-node-commonjs.js +0 -0
  2. package/browser/cli-ts-node-esm.js +0 -0
  3. package/browser/decorator/options/JoinTableMultipleColumnsOptions.d.ts +6 -0
  4. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  5. package/browser/decorator/options/JoinTableOptions.d.ts +6 -0
  6. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  7. package/browser/decorator/relations/JoinTable.js +1 -0
  8. package/browser/decorator/relations/JoinTable.js.map +1 -1
  9. package/browser/driver/Driver.d.ts +4 -0
  10. package/browser/driver/Driver.js.map +1 -1
  11. package/browser/driver/cordova/CordovaDriver.d.ts +1 -0
  12. package/browser/driver/cordova/CordovaDriver.js +1 -0
  13. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  14. package/browser/driver/oracle/OracleDriver.d.ts +1 -0
  15. package/browser/driver/oracle/OracleDriver.js +1 -0
  16. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  17. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  18. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  19. package/browser/driver/postgres/PostgresDriver.js +11 -1
  20. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  21. package/browser/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  22. package/browser/driver/postgres/PostgresQueryRunner.js +99 -1
  23. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  24. package/browser/driver/sap/SapDriver.d.ts +1 -0
  25. package/browser/driver/sap/SapDriver.js +1 -0
  26. package/browser/driver/sap/SapDriver.js.map +1 -1
  27. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  28. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  29. package/browser/driver/sqlite/SqliteDriver.js +18 -6
  30. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  31. package/browser/entity-manager/EntityManager.d.ts +4 -0
  32. package/browser/entity-manager/EntityManager.js +14 -1
  33. package/browser/entity-manager/EntityManager.js.map +1 -1
  34. package/browser/error/ForbiddenTransactionModeOverrideError.d.ts +8 -0
  35. package/browser/error/ForbiddenTransactionModeOverrideError.js +12 -0
  36. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -0
  37. package/browser/error/index.d.ts +1 -0
  38. package/browser/error/index.js +1 -0
  39. package/browser/error/index.js.map +1 -1
  40. package/browser/metadata-args/JoinTableMetadataArgs.d.ts +6 -0
  41. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  42. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
  43. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  44. package/browser/migration/Migration.d.ts +5 -1
  45. package/browser/migration/Migration.js +2 -1
  46. package/browser/migration/Migration.js.map +1 -1
  47. package/browser/migration/MigrationExecutor.js +39 -6
  48. package/browser/migration/MigrationExecutor.js.map +1 -1
  49. package/browser/migration/MigrationInterface.d.ts +7 -0
  50. package/browser/migration/MigrationInterface.js.map +1 -1
  51. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  52. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  53. package/browser/persistence/EntityPersistExecutor.js +2 -1
  54. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  55. package/browser/query-builder/InsertOrUpdateOptions.d.ts +7 -0
  56. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  57. package/browser/query-builder/InsertQueryBuilder.js +10 -1
  58. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  59. package/browser/query-builder/QueryBuilder.d.ts +1 -0
  60. package/browser/query-builder/QueryBuilder.js +13 -0
  61. package/browser/query-builder/QueryBuilder.js.map +1 -1
  62. package/browser/query-builder/QueryExpressionMap.d.ts +1 -0
  63. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  64. package/browser/query-builder/SelectQueryBuilder.d.ts +19 -0
  65. package/browser/query-builder/SelectQueryBuilder.js +76 -8
  66. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  67. package/browser/query-runner/BaseQueryRunner.d.ts +1 -1
  68. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  69. package/browser/repository/Repository.d.ts +5 -1
  70. package/browser/repository/Repository.js +6 -0
  71. package/browser/repository/Repository.js.map +1 -1
  72. package/browser/repository/TreeRepository.d.ts +0 -4
  73. package/browser/repository/TreeRepository.js +0 -11
  74. package/browser/repository/TreeRepository.js.map +1 -1
  75. package/browser/repository/UpsertOptions.d.ts +5 -2
  76. package/browser/repository/UpsertOptions.js.map +1 -1
  77. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  78. package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -2
  79. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  80. package/browser/schema-builder/view/View.d.ts +13 -1
  81. package/browser/schema-builder/view/View.js +16 -0
  82. package/browser/schema-builder/view/View.js.map +1 -1
  83. package/cli-ts-node-commonjs.js +0 -0
  84. package/cli-ts-node-esm.js +0 -0
  85. package/cli.js +0 -0
  86. package/commands/InitCommand.js +32 -5
  87. package/commands/InitCommand.js.map +1 -1
  88. package/commands/MigrationGenerateCommand.js +1 -0
  89. package/commands/MigrationGenerateCommand.js.map +1 -1
  90. package/decorator/options/JoinTableMultipleColumnsOptions.d.ts +6 -0
  91. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  92. package/decorator/options/JoinTableOptions.d.ts +6 -0
  93. package/decorator/options/JoinTableOptions.js.map +1 -1
  94. package/decorator/relations/JoinTable.js +1 -0
  95. package/decorator/relations/JoinTable.js.map +1 -1
  96. package/driver/Driver.d.ts +4 -0
  97. package/driver/Driver.js.map +1 -1
  98. package/driver/cordova/CordovaDriver.d.ts +1 -0
  99. package/driver/cordova/CordovaDriver.js +1 -0
  100. package/driver/cordova/CordovaDriver.js.map +1 -1
  101. package/driver/oracle/OracleDriver.d.ts +1 -0
  102. package/driver/oracle/OracleDriver.js +1 -0
  103. package/driver/oracle/OracleDriver.js.map +1 -1
  104. package/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  105. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  106. package/driver/postgres/PostgresDriver.js +11 -1
  107. package/driver/postgres/PostgresDriver.js.map +1 -1
  108. package/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  109. package/driver/postgres/PostgresQueryRunner.js +99 -1
  110. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  111. package/driver/sap/SapDriver.d.ts +1 -0
  112. package/driver/sap/SapDriver.js +1 -0
  113. package/driver/sap/SapDriver.js.map +1 -1
  114. package/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  115. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  116. package/driver/sqlite/SqliteDriver.js +18 -6
  117. package/driver/sqlite/SqliteDriver.js.map +1 -1
  118. package/entity-manager/EntityManager.d.ts +4 -0
  119. package/entity-manager/EntityManager.js +14 -1
  120. package/entity-manager/EntityManager.js.map +1 -1
  121. package/error/ForbiddenTransactionModeOverrideError.d.ts +8 -0
  122. package/error/ForbiddenTransactionModeOverrideError.js +16 -0
  123. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -0
  124. package/error/index.d.ts +1 -0
  125. package/error/index.js +1 -0
  126. package/error/index.js.map +1 -1
  127. package/index.mjs +2 -0
  128. package/metadata-args/JoinTableMetadataArgs.d.ts +6 -0
  129. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  130. package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
  131. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  132. package/migration/Migration.d.ts +5 -1
  133. package/migration/Migration.js +2 -1
  134. package/migration/Migration.js.map +1 -1
  135. package/migration/MigrationExecutor.js +38 -5
  136. package/migration/MigrationExecutor.js.map +1 -1
  137. package/migration/MigrationInterface.d.ts +7 -0
  138. package/migration/MigrationInterface.js.map +1 -1
  139. package/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  140. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  141. package/package.json +274 -1
  142. package/persistence/EntityPersistExecutor.js +2 -1
  143. package/persistence/EntityPersistExecutor.js.map +1 -1
  144. package/query-builder/InsertOrUpdateOptions.d.ts +7 -0
  145. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  146. package/query-builder/InsertQueryBuilder.js +10 -1
  147. package/query-builder/InsertQueryBuilder.js.map +1 -1
  148. package/query-builder/QueryBuilder.d.ts +1 -0
  149. package/query-builder/QueryBuilder.js +13 -0
  150. package/query-builder/QueryBuilder.js.map +1 -1
  151. package/query-builder/QueryExpressionMap.d.ts +1 -0
  152. package/query-builder/QueryExpressionMap.js.map +1 -1
  153. package/query-builder/SelectQueryBuilder.d.ts +19 -0
  154. package/query-builder/SelectQueryBuilder.js +76 -8
  155. package/query-builder/SelectQueryBuilder.js.map +1 -1
  156. package/query-runner/BaseQueryRunner.d.ts +1 -1
  157. package/query-runner/BaseQueryRunner.js.map +1 -1
  158. package/repository/Repository.d.ts +5 -1
  159. package/repository/Repository.js +6 -0
  160. package/repository/Repository.js.map +1 -1
  161. package/repository/TreeRepository.d.ts +0 -4
  162. package/repository/TreeRepository.js +0 -11
  163. package/repository/TreeRepository.js.map +1 -1
  164. package/repository/UpsertOptions.d.ts +5 -2
  165. package/repository/UpsertOptions.js.map +1 -1
  166. package/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  167. package/schema-builder/RdbmsSchemaBuilder.js +74 -2
  168. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  169. package/schema-builder/view/View.d.ts +13 -1
  170. package/schema-builder/view/View.js +16 -0
  171. package/schema-builder/view/View.js.map +1 -1
@@ -1225,6 +1225,7 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1225
1225
  * Updates composite primary keys.
1226
1226
  */
1227
1227
  async updatePrimaryKeys(tableOrName, columns) {
1228
+ var _a;
1228
1229
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1229
1230
  ? tableOrName
1230
1231
  : await this.getCachedTable(tableOrName);
@@ -1248,7 +1249,7 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1248
1249
  clonedTable.columns
1249
1250
  .filter((column) => columnNames.indexOf(column.name) !== -1)
1250
1251
  .forEach((column) => (column.isPrimary = true));
1251
- const pkName = primaryColumns[0].primaryKeyConstraintName
1252
+ const pkName = ((_a = primaryColumns[0]) === null || _a === void 0 ? void 0 : _a.primaryKeyConstraintName)
1252
1253
  ? primaryColumns[0].primaryKeyConstraintName
1253
1254
  : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1254
1255
  const columnNamesString = columnNames
@@ -1482,6 +1483,21 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1482
1483
  await this.executeQueries(up, down);
1483
1484
  table.addIndex(index);
1484
1485
  }
1486
+ /**
1487
+ * Create a new view index.
1488
+ */
1489
+ async createViewIndex(viewOrName, index) {
1490
+ const view = InstanceChecker_1.InstanceChecker.isView(viewOrName)
1491
+ ? viewOrName
1492
+ : await this.getCachedView(viewOrName);
1493
+ // new index may be passed without name. In this case we generate index name manually.
1494
+ if (!index.name)
1495
+ index.name = this.generateIndexName(view, index);
1496
+ const up = this.createViewIndexSql(view, index);
1497
+ const down = this.dropIndexSql(view, index);
1498
+ await this.executeQueries(up, down);
1499
+ view.addIndex(index);
1500
+ }
1485
1501
  /**
1486
1502
  * Creates a new indices
1487
1503
  */
@@ -1490,6 +1506,14 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1490
1506
  await this.createIndex(tableOrName, index);
1491
1507
  }
1492
1508
  }
1509
+ /**
1510
+ * Creates new view indices
1511
+ */
1512
+ async createViewIndices(viewOrName, indices) {
1513
+ for (const index of indices) {
1514
+ await this.createViewIndex(viewOrName, index);
1515
+ }
1516
+ }
1493
1517
  /**
1494
1518
  * Drops an index from the table.
1495
1519
  */
@@ -1510,6 +1534,26 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1510
1534
  await this.executeQueries(up, down);
1511
1535
  table.removeIndex(index);
1512
1536
  }
1537
+ /**
1538
+ * Drops an index from a view.
1539
+ */
1540
+ async dropViewIndex(viewOrName, indexOrName) {
1541
+ const view = InstanceChecker_1.InstanceChecker.isView(viewOrName)
1542
+ ? viewOrName
1543
+ : await this.getCachedView(viewOrName);
1544
+ const index = InstanceChecker_1.InstanceChecker.isTableIndex(indexOrName)
1545
+ ? indexOrName
1546
+ : view.indices.find((i) => i.name === indexOrName);
1547
+ if (!index)
1548
+ throw new error_1.TypeORMError(`Supplied index ${indexOrName} was not found in view ${view.name}`);
1549
+ // old index may be passed without name. In this case we generate index name manually.
1550
+ if (!index.name)
1551
+ index.name = this.generateIndexName(view, index);
1552
+ const up = this.dropIndexSql(view, index);
1553
+ const down = this.createViewIndexSql(view, index);
1554
+ await this.executeQueries(up, down);
1555
+ view.removeIndex(index);
1556
+ }
1513
1557
  /**
1514
1558
  * Drops an indices from the table.
1515
1559
  */
@@ -1608,12 +1652,41 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1608
1652
  return `("t"."schema" = '${schema}' AND "t"."name" = '${tableName}')`;
1609
1653
  })
1610
1654
  .join(" OR ");
1655
+ const constraintsCondition = viewNames.length === 0
1656
+ ? "1=1"
1657
+ : viewNames
1658
+ .map((tableName) => this.driver.parseTableName(tableName))
1659
+ .map(({ schema, tableName }) => {
1660
+ if (!schema) {
1661
+ schema =
1662
+ this.driver.options.schema || currentSchema;
1663
+ }
1664
+ return `("ns"."nspname" = '${schema}' AND "t"."relname" = '${tableName}')`;
1665
+ })
1666
+ .join(" OR ");
1667
+ const indicesSql = `SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", ` +
1668
+ `CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", ` +
1669
+ `"types"."typname" AS "type_name" ` +
1670
+ `FROM "pg_class" "t" ` +
1671
+ `INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" ` +
1672
+ `INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") ` +
1673
+ `INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" ` +
1674
+ `INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" ` +
1675
+ `INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" ` +
1676
+ `LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" ` +
1677
+ `WHERE "t"."relkind" IN ('m') AND "cnst"."contype" IS NULL AND (${constraintsCondition})`;
1611
1678
  const query = `SELECT "t".* FROM ${this.escapePath(this.getTypeormMetadataTableName())} "t" ` +
1612
1679
  `INNER JOIN "pg_catalog"."pg_class" "c" ON "c"."relname" = "t"."name" ` +
1613
1680
  `INNER JOIN "pg_namespace" "n" ON "n"."oid" = "c"."relnamespace" AND "n"."nspname" = "t"."schema" ` +
1614
1681
  `WHERE "t"."type" IN ('${MetadataTableType_1.MetadataTableType.VIEW}', '${MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW}') ${viewsCondition ? `AND (${viewsCondition})` : ""}`;
1615
1682
  const dbViews = await this.query(query);
1683
+ const dbIndices = await this.query(indicesSql);
1616
1684
  return dbViews.map((dbView) => {
1685
+ // find index constraints of table, group them by constraint name and build TableIndex.
1686
+ const tableIndexConstraints = OrmUtils_1.OrmUtils.uniq(dbIndices.filter((dbIndex) => {
1687
+ return (dbIndex["table_name"] === dbView["name"] &&
1688
+ dbIndex["table_schema"] === dbView["schema"]);
1689
+ }), (dbIndex) => dbIndex["constraint_name"]);
1617
1690
  const view = new View_1.View();
1618
1691
  const schema = dbView["schema"] === currentSchema &&
1619
1692
  !this.driver.options.schema
@@ -1625,6 +1698,22 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1625
1698
  view.expression = dbView["value"];
1626
1699
  view.materialized =
1627
1700
  dbView["type"] === MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW;
1701
+ view.indices = tableIndexConstraints.map((constraint) => {
1702
+ const indices = dbIndices.filter((index) => {
1703
+ return (index["table_schema"] === constraint["table_schema"] &&
1704
+ index["table_name"] === constraint["table_name"] &&
1705
+ index["constraint_name"] ===
1706
+ constraint["constraint_name"]);
1707
+ });
1708
+ return new TableIndex_1.TableIndex({
1709
+ view: view,
1710
+ name: constraint["constraint_name"],
1711
+ columnNames: indices.map((i) => i["column_name"]),
1712
+ isUnique: constraint["is_unique"] === "TRUE",
1713
+ where: constraint["condition"],
1714
+ isFulltext: false,
1715
+ });
1716
+ });
1628
1717
  return view;
1629
1718
  });
1630
1719
  }
@@ -2321,6 +2410,15 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2321
2410
  .join(", ");
2322
2411
  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 : ""}`);
2323
2412
  }
2413
+ /**
2414
+ * Builds create view index sql.
2415
+ */
2416
+ createViewIndexSql(view, index) {
2417
+ const columns = index.columnNames
2418
+ .map((columnName) => `"${columnName}"`)
2419
+ .join(", ");
2420
+ return new Query_1.Query(`CREATE ${index.isUnique ? "UNIQUE " : ""}INDEX "${index.name}" ON ${this.escapePath(view)} (${columns}) ${index.where ? "WHERE " + index.where : ""}`);
2421
+ }
2324
2422
  /**
2325
2423
  * Builds drop index sql.
2326
2424
  */