typeorm 0.3.6-dev.9d331b1 → 0.3.6-dev.b84cb9b

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