typeorm 0.3.11-dev.658604d → 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 (186) hide show
  1. package/browser/decorator/options/JoinTableMultipleColumnsOptions.d.ts +6 -0
  2. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  3. package/browser/decorator/options/JoinTableOptions.d.ts +6 -0
  4. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  5. package/browser/decorator/relations/JoinTable.js +1 -0
  6. package/browser/decorator/relations/JoinTable.js.map +1 -1
  7. package/browser/driver/Driver.d.ts +4 -0
  8. package/browser/driver/Driver.js.map +1 -1
  9. package/browser/driver/cordova/CordovaDriver.d.ts +1 -0
  10. package/browser/driver/cordova/CordovaDriver.js +1 -0
  11. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  12. package/browser/driver/oracle/OracleDriver.d.ts +1 -0
  13. package/browser/driver/oracle/OracleDriver.js +1 -0
  14. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  15. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  16. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  17. package/browser/driver/postgres/PostgresDriver.js +11 -1
  18. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  19. package/browser/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  20. package/browser/driver/postgres/PostgresQueryRunner.js +97 -0
  21. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  22. package/browser/driver/sap/SapDriver.d.ts +1 -0
  23. package/browser/driver/sap/SapDriver.js +1 -0
  24. package/browser/driver/sap/SapDriver.js.map +1 -1
  25. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  26. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  27. package/browser/driver/sqlite/SqliteDriver.js +18 -6
  28. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  29. package/browser/entity-manager/EntityManager.d.ts +4 -0
  30. package/browser/entity-manager/EntityManager.js +14 -1
  31. package/browser/entity-manager/EntityManager.js.map +1 -1
  32. package/browser/error/ForbiddenTransactionModeOverrideError.d.ts +8 -0
  33. package/browser/error/ForbiddenTransactionModeOverrideError.js +12 -0
  34. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -0
  35. package/browser/error/index.d.ts +1 -0
  36. package/browser/error/index.js +1 -0
  37. package/browser/error/index.js.map +1 -1
  38. package/browser/find-options/FindOperatorType.d.ts +1 -1
  39. package/browser/find-options/FindOperatorType.js.map +1 -1
  40. package/browser/find-options/operator/And.d.ts +2 -0
  41. package/browser/find-options/operator/And.js +6 -0
  42. package/browser/find-options/operator/And.js.map +1 -0
  43. package/browser/index.d.ts +1 -0
  44. package/browser/index.js +1 -0
  45. package/browser/index.js.map +1 -1
  46. package/browser/metadata-args/JoinTableMetadataArgs.d.ts +6 -0
  47. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  48. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
  49. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  50. package/browser/migration/Migration.d.ts +5 -1
  51. package/browser/migration/Migration.js +2 -1
  52. package/browser/migration/Migration.js.map +1 -1
  53. package/browser/migration/MigrationExecutor.js +39 -6
  54. package/browser/migration/MigrationExecutor.js.map +1 -1
  55. package/browser/migration/MigrationInterface.d.ts +7 -0
  56. package/browser/migration/MigrationInterface.js.map +1 -1
  57. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  58. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  59. package/browser/persistence/EntityPersistExecutor.js +2 -1
  60. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  61. package/browser/query-builder/InsertOrUpdateOptions.d.ts +7 -0
  62. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  63. package/browser/query-builder/InsertQueryBuilder.js +10 -1
  64. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  65. package/browser/query-builder/QueryBuilder.d.ts +1 -0
  66. package/browser/query-builder/QueryBuilder.js +22 -0
  67. package/browser/query-builder/QueryBuilder.js.map +1 -1
  68. package/browser/query-builder/QueryExpressionMap.d.ts +1 -0
  69. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  70. package/browser/query-builder/SelectQueryBuilder.d.ts +19 -0
  71. package/browser/query-builder/SelectQueryBuilder.js +76 -8
  72. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  73. package/browser/query-builder/WhereClause.d.ts +1 -1
  74. package/browser/query-builder/WhereClause.js.map +1 -1
  75. package/browser/query-runner/BaseQueryRunner.d.ts +1 -1
  76. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  77. package/browser/repository/Repository.d.ts +5 -1
  78. package/browser/repository/Repository.js +6 -0
  79. package/browser/repository/Repository.js.map +1 -1
  80. package/browser/repository/TreeRepository.d.ts +0 -4
  81. package/browser/repository/TreeRepository.js +0 -11
  82. package/browser/repository/TreeRepository.js.map +1 -1
  83. package/browser/repository/UpsertOptions.d.ts +5 -2
  84. package/browser/repository/UpsertOptions.js.map +1 -1
  85. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  86. package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -2
  87. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  88. package/browser/schema-builder/view/View.d.ts +13 -1
  89. package/browser/schema-builder/view/View.js +16 -0
  90. package/browser/schema-builder/view/View.js.map +1 -1
  91. package/commands/InitCommand.js +32 -5
  92. package/commands/InitCommand.js.map +1 -1
  93. package/commands/MigrationGenerateCommand.js +1 -0
  94. package/commands/MigrationGenerateCommand.js.map +1 -1
  95. package/decorator/options/JoinTableMultipleColumnsOptions.d.ts +6 -0
  96. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  97. package/decorator/options/JoinTableOptions.d.ts +6 -0
  98. package/decorator/options/JoinTableOptions.js.map +1 -1
  99. package/decorator/relations/JoinTable.js +1 -0
  100. package/decorator/relations/JoinTable.js.map +1 -1
  101. package/driver/Driver.d.ts +4 -0
  102. package/driver/Driver.js.map +1 -1
  103. package/driver/cordova/CordovaDriver.d.ts +1 -0
  104. package/driver/cordova/CordovaDriver.js +1 -0
  105. package/driver/cordova/CordovaDriver.js.map +1 -1
  106. package/driver/oracle/OracleDriver.d.ts +1 -0
  107. package/driver/oracle/OracleDriver.js +1 -0
  108. package/driver/oracle/OracleDriver.js.map +1 -1
  109. package/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  110. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  111. package/driver/postgres/PostgresDriver.js +11 -1
  112. package/driver/postgres/PostgresDriver.js.map +1 -1
  113. package/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  114. package/driver/postgres/PostgresQueryRunner.js +97 -0
  115. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  116. package/driver/sap/SapDriver.d.ts +1 -0
  117. package/driver/sap/SapDriver.js +1 -0
  118. package/driver/sap/SapDriver.js.map +1 -1
  119. package/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  120. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  121. package/driver/sqlite/SqliteDriver.js +18 -6
  122. package/driver/sqlite/SqliteDriver.js.map +1 -1
  123. package/entity-manager/EntityManager.d.ts +4 -0
  124. package/entity-manager/EntityManager.js +14 -1
  125. package/entity-manager/EntityManager.js.map +1 -1
  126. package/error/ForbiddenTransactionModeOverrideError.d.ts +8 -0
  127. package/error/ForbiddenTransactionModeOverrideError.js +16 -0
  128. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -0
  129. package/error/index.d.ts +1 -0
  130. package/error/index.js +1 -0
  131. package/error/index.js.map +1 -1
  132. package/find-options/FindOperatorType.d.ts +1 -1
  133. package/find-options/FindOperatorType.js.map +1 -1
  134. package/find-options/operator/And.d.ts +2 -0
  135. package/find-options/operator/And.js +10 -0
  136. package/find-options/operator/And.js.map +1 -0
  137. package/index.d.ts +1 -0
  138. package/index.js +1 -0
  139. package/index.js.map +1 -1
  140. package/index.mjs +4 -0
  141. package/metadata-args/JoinTableMetadataArgs.d.ts +6 -0
  142. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  143. package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
  144. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  145. package/migration/Migration.d.ts +5 -1
  146. package/migration/Migration.js +2 -1
  147. package/migration/Migration.js.map +1 -1
  148. package/migration/MigrationExecutor.js +38 -5
  149. package/migration/MigrationExecutor.js.map +1 -1
  150. package/migration/MigrationInterface.d.ts +7 -0
  151. package/migration/MigrationInterface.js.map +1 -1
  152. package/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  153. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  154. package/package.json +1 -1
  155. package/persistence/EntityPersistExecutor.js +2 -1
  156. package/persistence/EntityPersistExecutor.js.map +1 -1
  157. package/query-builder/InsertOrUpdateOptions.d.ts +7 -0
  158. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  159. package/query-builder/InsertQueryBuilder.js +10 -1
  160. package/query-builder/InsertQueryBuilder.js.map +1 -1
  161. package/query-builder/QueryBuilder.d.ts +1 -0
  162. package/query-builder/QueryBuilder.js +22 -0
  163. package/query-builder/QueryBuilder.js.map +1 -1
  164. package/query-builder/QueryExpressionMap.d.ts +1 -0
  165. package/query-builder/QueryExpressionMap.js.map +1 -1
  166. package/query-builder/SelectQueryBuilder.d.ts +19 -0
  167. package/query-builder/SelectQueryBuilder.js +76 -8
  168. package/query-builder/SelectQueryBuilder.js.map +1 -1
  169. package/query-builder/WhereClause.d.ts +1 -1
  170. package/query-builder/WhereClause.js.map +1 -1
  171. package/query-runner/BaseQueryRunner.d.ts +1 -1
  172. package/query-runner/BaseQueryRunner.js.map +1 -1
  173. package/repository/Repository.d.ts +5 -1
  174. package/repository/Repository.js +6 -0
  175. package/repository/Repository.js.map +1 -1
  176. package/repository/TreeRepository.d.ts +0 -4
  177. package/repository/TreeRepository.js +0 -11
  178. package/repository/TreeRepository.js.map +1 -1
  179. package/repository/UpsertOptions.d.ts +5 -2
  180. package/repository/UpsertOptions.js.map +1 -1
  181. package/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  182. package/schema-builder/RdbmsSchemaBuilder.js +74 -2
  183. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  184. package/schema-builder/view/View.d.ts +13 -1
  185. package/schema-builder/view/View.js +16 -0
  186. package/schema-builder/view/View.js.map +1 -1
@@ -93,6 +93,7 @@ export declare class SelectQueryBuilder<Entity extends ObjectLiteral> extends Qu
93
93
  * Sets the distinct on clause for Postgres.
94
94
  */
95
95
  distinctOn(distinctOn: string[]): this;
96
+ fromDummy(): SelectQueryBuilder<any>;
96
97
  /**
97
98
  * Specifies FROM which entity's table select/update/delete will be executed.
98
99
  * Also sets a main string alias of the selection data.
@@ -402,6 +403,18 @@ export declare class SelectQueryBuilder<Entity extends ObjectLiteral> extends Qu
402
403
  * Additionally you can add parameters used in where expression.
403
404
  */
404
405
  orWhere(where: Brackets | string | ((qb: this) => string) | ObjectLiteral | ObjectLiteral[], parameters?: ObjectLiteral): this;
406
+ /**
407
+ * Sets a new where EXISTS clause
408
+ */
409
+ whereExists(subQuery: SelectQueryBuilder<any>): this;
410
+ /**
411
+ * Adds a new AND where EXISTS clause
412
+ */
413
+ andWhereExists(subQuery: SelectQueryBuilder<any>): this;
414
+ /**
415
+ * Adds a new OR where EXISTS clause
416
+ */
417
+ orWhereExists(subQuery: SelectQueryBuilder<any>): this;
405
418
  /**
406
419
  * Adds new AND WHERE with conditions for the given ids.
407
420
  *
@@ -562,6 +575,11 @@ export declare class SelectQueryBuilder<Entity extends ObjectLiteral> extends Qu
562
575
  * Count excludes all limitations set by setFirstResult and setMaxResults methods call.
563
576
  */
564
577
  getCount(): Promise<number>;
578
+ /**
579
+ * Gets exists
580
+ * Returns whether any rows exists matching current query.
581
+ */
582
+ getExists(): Promise<boolean>;
565
583
  /**
566
584
  * Executes built SQL query and returns entities and overall entities count (without limitation).
567
585
  * This method is useful to build pagination.
@@ -634,6 +652,7 @@ export declare class SelectQueryBuilder<Entity extends ObjectLiteral> extends Qu
634
652
  protected findEntityColumnSelects(aliasName: string, metadata: EntityMetadata): SelectQuery[];
635
653
  private computeCountExpression;
636
654
  protected executeCountQuery(queryRunner: QueryRunner): Promise<number>;
655
+ protected executeExistsQuery(queryRunner: QueryRunner): Promise<boolean>;
637
656
  protected applyFindOptions(): void;
638
657
  /**
639
658
  * Executes sql generated by query builder and returns object with raw results and entities created from them.
@@ -151,6 +151,10 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
151
151
  this.expressionMap.selectDistinctOn = distinctOn;
152
152
  return this;
153
153
  }
154
+ fromDummy() {
155
+ var _a;
156
+ return this.from((_a = this.connection.driver.dummyTableName) !== null && _a !== void 0 ? _a : "(SELECT 1 AS dummy_column)", "dummy_table");
157
+ }
154
158
  /**
155
159
  * Specifies FROM which entity's table select/update/delete will be executed.
156
160
  * Also sets a main string alias of the selection data.
@@ -368,6 +372,24 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
368
372
  this.setParameters(parameters);
369
373
  return this;
370
374
  }
375
+ /**
376
+ * Sets a new where EXISTS clause
377
+ */
378
+ whereExists(subQuery) {
379
+ return this.where(...this.getExistsCondition(subQuery));
380
+ }
381
+ /**
382
+ * Adds a new AND where EXISTS clause
383
+ */
384
+ andWhereExists(subQuery) {
385
+ return this.andWhere(...this.getExistsCondition(subQuery));
386
+ }
387
+ /**
388
+ * Adds a new OR where EXISTS clause
389
+ */
390
+ orWhereExists(subQuery) {
391
+ return this.orWhere(...this.getExistsCondition(subQuery));
392
+ }
371
393
  /**
372
394
  * Adds new AND WHERE with conditions for the given ids.
373
395
  *
@@ -751,6 +773,46 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
751
773
  await queryRunner.release();
752
774
  }
753
775
  }
776
+ /**
777
+ * Gets exists
778
+ * Returns whether any rows exists matching current query.
779
+ */
780
+ async getExists() {
781
+ if (this.expressionMap.lockMode === "optimistic")
782
+ throw new OptimisticLockCanNotBeUsedError_1.OptimisticLockCanNotBeUsedError();
783
+ const queryRunner = this.obtainQueryRunner();
784
+ let transactionStartedByUs = false;
785
+ try {
786
+ // start transaction if it was enabled
787
+ if (this.expressionMap.useTransaction === true &&
788
+ queryRunner.isTransactionActive === false) {
789
+ await queryRunner.startTransaction();
790
+ transactionStartedByUs = true;
791
+ }
792
+ this.expressionMap.queryEntity = false;
793
+ const results = await this.executeExistsQuery(queryRunner);
794
+ // close transaction if we started it
795
+ if (transactionStartedByUs) {
796
+ await queryRunner.commitTransaction();
797
+ }
798
+ return results;
799
+ }
800
+ catch (error) {
801
+ // rollback transaction if we started it
802
+ if (transactionStartedByUs) {
803
+ try {
804
+ await queryRunner.rollbackTransaction();
805
+ }
806
+ catch (rollbackError) { }
807
+ }
808
+ throw error;
809
+ }
810
+ finally {
811
+ if (queryRunner !== this.queryRunner)
812
+ // means we created our own query runner
813
+ await queryRunner.release();
814
+ }
815
+ }
754
816
  /**
755
817
  * Executes built SQL query and returns entities and overall entities count (without limitation).
756
818
  * This method is useful to build pagination.
@@ -1624,6 +1686,16 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
1624
1686
  return 0;
1625
1687
  return parseInt(results[0]["cnt"]);
1626
1688
  }
1689
+ async executeExistsQuery(queryRunner) {
1690
+ const results = await this.connection
1691
+ .createQueryBuilder()
1692
+ .fromDummy()
1693
+ .select("1", "row_exists")
1694
+ .whereExists(this)
1695
+ .limit(1)
1696
+ .loadRawResults(queryRunner);
1697
+ return results.length > 0;
1698
+ }
1627
1699
  applyFindOptions() {
1628
1700
  // todo: convert relations: string[] to object map to simplify code
1629
1701
  // todo: same with selects
@@ -1868,9 +1940,9 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
1868
1940
  .offset(this.expressionMap.skip)
1869
1941
  .limit(this.expressionMap.take)
1870
1942
  .orderBy(orderBys)
1871
- .cache(this.expressionMap.cache
1872
- ? this.expressionMap.cache
1873
- : this.expressionMap.cacheId, this.expressionMap.cacheDuration)
1943
+ .cache(this.expressionMap.cache && this.expressionMap.cacheId
1944
+ ? `${this.expressionMap.cacheId}-pagination`
1945
+ : this.expressionMap.cache, this.expressionMap.cacheDuration)
1874
1946
  .setParameters(this.getParameters())
1875
1947
  .setNativeParameters(this.expressionMap.nativeParameters)
1876
1948
  .getRawMany();
@@ -2468,7 +2540,7 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
2468
2540
  const existJoin = this.joins.find((join) => join.alias === joinAlias);
2469
2541
  if (!existJoin) {
2470
2542
  this.joins.push({
2471
- type: "inner",
2543
+ type: "left",
2472
2544
  select: false,
2473
2545
  selection: undefined,
2474
2546
  alias: joinAlias,
@@ -2476,10 +2548,6 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
2476
2548
  relationMetadata: relation,
2477
2549
  });
2478
2550
  }
2479
- else {
2480
- if (existJoin.type === "left")
2481
- existJoin.type = "inner";
2482
- }
2483
2551
  const condition = this.buildWhere(where[key], relation.inverseEntityMetadata, joinAlias);
2484
2552
  if (condition) {
2485
2553
  andConditions.push(condition);