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