typeorm 0.3.6-dev.9d331b1 → 0.3.6

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 (141) hide show
  1. package/README.md +33 -13
  2. package/browser/cache/DbQueryResultCache.js +9 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cli-ts-node-commonjs.js +0 -0
  5. package/browser/cli-ts-node-esm.js +0 -0
  6. package/browser/data-source/DataSourceOptions.d.ts +2 -1
  7. package/browser/data-source/DataSourceOptions.js.map +1 -1
  8. package/browser/decorator/Index.js +1 -0
  9. package/browser/decorator/Index.js.map +1 -1
  10. package/browser/decorator/columns/PrimaryColumn.js +4 -1
  11. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  12. package/browser/decorator/options/IndexOptions.d.ts +8 -0
  13. package/browser/decorator/options/IndexOptions.js.map +1 -1
  14. package/browser/driver/DriverFactory.js +4 -0
  15. package/browser/driver/DriverFactory.js.map +1 -1
  16. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  17. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  18. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  19. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  20. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  21. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  22. package/browser/driver/spanner/SpannerDriver.d.ts +240 -0
  23. package/browser/driver/spanner/SpannerDriver.js +565 -0
  24. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  25. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  26. package/browser/driver/spanner/SpannerQueryRunner.js +1359 -0
  27. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  28. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  29. package/browser/driver/types/ColumnTypes.js.map +1 -1
  30. package/browser/driver/types/DatabaseType.d.ts +1 -1
  31. package/browser/driver/types/DatabaseType.js.map +1 -1
  32. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  33. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  34. package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
  35. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  36. package/browser/find-options/FindOneOptions.d.ts +1 -1
  37. package/browser/find-options/FindOneOptions.js.map +1 -1
  38. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  39. package/browser/find-options/FindOptionsUtils.js +2 -1
  40. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  41. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  42. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  43. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  44. package/browser/metadata/IndexMetadata.d.ts +8 -0
  45. package/browser/metadata/IndexMetadata.js +9 -0
  46. package/browser/metadata/IndexMetadata.js.map +1 -1
  47. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  48. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  49. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  50. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  51. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
  52. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  53. package/browser/platform/PlatformTools.js +5 -0
  54. package/browser/platform/PlatformTools.js.map +1 -1
  55. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  56. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  57. package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
  58. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  59. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  60. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  61. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  62. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  63. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  64. package/browser/schema-builder/RdbmsSchemaBuilder.js +15 -1
  65. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  66. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  67. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  68. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  69. package/browser/schema-builder/table/TableIndex.js +3 -0
  70. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  71. package/cache/DbQueryResultCache.js +9 -1
  72. package/cache/DbQueryResultCache.js.map +1 -1
  73. package/cli-ts-node-commonjs.js +0 -0
  74. package/cli-ts-node-esm.js +0 -0
  75. package/cli.js +0 -0
  76. package/data-source/DataSourceOptions.d.ts +2 -1
  77. package/data-source/DataSourceOptions.js.map +1 -1
  78. package/decorator/Index.js +1 -0
  79. package/decorator/Index.js.map +1 -1
  80. package/decorator/columns/PrimaryColumn.js +4 -1
  81. package/decorator/columns/PrimaryColumn.js.map +1 -1
  82. package/decorator/options/IndexOptions.d.ts +8 -0
  83. package/decorator/options/IndexOptions.js.map +1 -1
  84. package/driver/DriverFactory.js +4 -0
  85. package/driver/DriverFactory.js.map +1 -1
  86. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  87. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  88. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  89. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  90. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  91. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  92. package/driver/spanner/SpannerDriver.d.ts +240 -0
  93. package/driver/spanner/SpannerDriver.js +569 -0
  94. package/driver/spanner/SpannerDriver.js.map +1 -0
  95. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  96. package/driver/spanner/SpannerQueryRunner.js +1363 -0
  97. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  98. package/driver/types/ColumnTypes.d.ts +1 -1
  99. package/driver/types/ColumnTypes.js.map +1 -1
  100. package/driver/types/DatabaseType.d.ts +1 -1
  101. package/driver/types/DatabaseType.js.map +1 -1
  102. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  103. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  104. package/entity-schema/EntitySchemaTransformer.js +1 -0
  105. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  106. package/find-options/FindOneOptions.d.ts +1 -1
  107. package/find-options/FindOneOptions.js.map +1 -1
  108. package/find-options/FindOptionsUtils.d.ts +2 -1
  109. package/find-options/FindOptionsUtils.js +2 -1
  110. package/find-options/FindOptionsUtils.js.map +1 -1
  111. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  112. package/logger/AdvancedConsoleLogger.js +1 -1
  113. package/logger/AdvancedConsoleLogger.js.map +1 -1
  114. package/metadata/IndexMetadata.d.ts +8 -0
  115. package/metadata/IndexMetadata.js +9 -0
  116. package/metadata/IndexMetadata.js.map +1 -1
  117. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  118. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  119. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  120. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  121. package/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
  122. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  123. package/package.json +268 -1
  124. package/platform/PlatformTools.js +5 -0
  125. package/platform/PlatformTools.js.map +1 -1
  126. package/query-builder/InsertQueryBuilder.js +15 -3
  127. package/query-builder/InsertQueryBuilder.js.map +1 -1
  128. package/query-builder/QueryExpressionMap.d.ts +1 -1
  129. package/query-builder/QueryExpressionMap.js.map +1 -1
  130. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  131. package/query-builder/SelectQueryBuilder.js +25 -4
  132. package/query-builder/SelectQueryBuilder.js.map +1 -1
  133. package/query-builder/UpdateQueryBuilder.js +18 -7
  134. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  135. package/schema-builder/RdbmsSchemaBuilder.js +15 -1
  136. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  137. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  138. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  139. package/schema-builder/table/TableIndex.d.ts +8 -0
  140. package/schema-builder/table/TableIndex.js +3 -0
  141. package/schema-builder/table/TableIndex.js.map +1 -1
@@ -1262,7 +1262,8 @@ export class SelectQueryBuilder extends QueryBuilder {
1262
1262
  }
1263
1263
  else if (DriverUtils.isMySQLFamily(this.connection.driver) ||
1264
1264
  this.connection.driver.options.type === "aurora-mysql" ||
1265
- this.connection.driver.options.type === "sap") {
1265
+ this.connection.driver.options.type === "sap" ||
1266
+ this.connection.driver.options.type === "spanner") {
1266
1267
  if (limit && offset)
1267
1268
  return " LIMIT " + limit + " OFFSET " + offset;
1268
1269
  if (limit)
@@ -1400,6 +1401,13 @@ export class SelectQueryBuilder extends QueryBuilder {
1400
1401
  else {
1401
1402
  throw new LockNotSupportedOnGivenDriverError();
1402
1403
  }
1404
+ case "for_key_share":
1405
+ if (driver.options.type === "postgres") {
1406
+ return " FOR KEY SHARE" + lockTablesClause;
1407
+ }
1408
+ else {
1409
+ throw new LockNotSupportedOnGivenDriverError();
1410
+ }
1403
1411
  default:
1404
1412
  return "";
1405
1413
  }
@@ -1546,6 +1554,17 @@ export class SelectQueryBuilder extends QueryBuilder {
1546
1554
  }
1547
1555
  return `COUNT(DISTINCT(CONCAT(${columnsExpression})))`;
1548
1556
  }
1557
+ if (this.connection.driver.options.type === "spanner") {
1558
+ // spanner also has gotta be different from everyone else.
1559
+ // they do not support concatenation of different column types without casting them to string
1560
+ if (primaryColumns.length === 1) {
1561
+ return `COUNT(DISTINCT(${distinctAlias}.${this.escape(primaryColumns[0].databaseName)}))`;
1562
+ }
1563
+ const columnsExpression = primaryColumns
1564
+ .map((primaryColumn) => `CAST(${distinctAlias}.${this.escape(primaryColumn.databaseName)} AS STRING)`)
1565
+ .join(", '|;|', ");
1566
+ return `COUNT(DISTINCT(CONCAT(${columnsExpression})))`;
1567
+ }
1549
1568
  // If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated.
1550
1569
  // Per the SQL spec, this is the canonical string concatenation mechanism which is most
1551
1570
  // likely to work across servers implementing the SQL standard.
@@ -1717,7 +1736,8 @@ export class SelectQueryBuilder extends QueryBuilder {
1717
1736
  "pessimistic_partial_write" ||
1718
1737
  this.findOptions.lock.mode ===
1719
1738
  "pessimistic_write_or_fail" ||
1720
- this.findOptions.lock.mode === "for_no_key_update") {
1739
+ this.findOptions.lock.mode === "for_no_key_update" ||
1740
+ this.findOptions.lock.mode === "for_key_share") {
1721
1741
  const tableNames = this.findOptions.lock.tables
1722
1742
  ? this.findOptions.lock.tables.map((table) => {
1723
1743
  const tableAlias = this.expressionMap.aliases.find((alias) => {
@@ -1770,7 +1790,8 @@ export class SelectQueryBuilder extends QueryBuilder {
1770
1790
  this.expressionMap.lockMode === "pessimistic_write" ||
1771
1791
  this.expressionMap.lockMode === "pessimistic_partial_write" ||
1772
1792
  this.expressionMap.lockMode === "pessimistic_write_or_fail" ||
1773
- this.expressionMap.lockMode === "for_no_key_update") &&
1793
+ this.expressionMap.lockMode === "for_no_key_update" ||
1794
+ this.expressionMap.lockMode === "for_key_share") &&
1774
1795
  !queryRunner.isTransactionActive)
1775
1796
  throw new PessimisticLockTransactionRequiredError();
1776
1797
  if (this.expressionMap.lockMode === "optimistic") {
@@ -1803,7 +1824,7 @@ export class SelectQueryBuilder extends QueryBuilder {
1803
1824
  // make sure we aren't overriding user-defined order in inverse direction
1804
1825
  orderBys[columnAlias] = "ASC";
1805
1826
  const alias = DriverUtils.buildAlias(this.connection.driver, "ids_" + mainAliasName, primaryColumn.databaseName);
1806
- return `${distinctAlias}.${columnAlias} as "${alias}"`;
1827
+ return `${distinctAlias}.${columnAlias} AS ${this.escape(alias)}`;
1807
1828
  });
1808
1829
  rawResults = await new SelectQueryBuilder(this.connection, queryRunner)
1809
1830
  .select(`DISTINCT ${querySelects.join(", ")}`)