typeorm 0.3.24-dev.80e9b30 → 0.3.24-dev.a213bbd

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 (45) hide show
  1. package/browser/data-source/DataSource.d.ts +8 -0
  2. package/browser/data-source/DataSource.js +16 -0
  3. package/browser/data-source/DataSource.js.map +1 -1
  4. package/browser/driver/mongodb/MongoQueryRunner.d.ts +4 -0
  5. package/browser/driver/mongodb/MongoQueryRunner.js +6 -0
  6. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  7. package/browser/entity-manager/EntityManager.d.ts +8 -0
  8. package/browser/entity-manager/EntityManager.js +16 -0
  9. package/browser/entity-manager/EntityManager.js.map +1 -1
  10. package/browser/query-runner/BaseQueryRunner.d.ts +8 -0
  11. package/browser/query-runner/BaseQueryRunner.js +16 -0
  12. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  13. package/browser/query-runner/QueryResult.d.ts +2 -2
  14. package/browser/query-runner/QueryResult.js.map +1 -1
  15. package/browser/query-runner/QueryRunner.d.ts +8 -0
  16. package/browser/query-runner/QueryRunner.js.map +1 -1
  17. package/browser/repository/Repository.d.ts +9 -1
  18. package/browser/repository/Repository.js +16 -0
  19. package/browser/repository/Repository.js.map +1 -1
  20. package/browser/util/SqlTagUtils.d.ts +11 -0
  21. package/browser/util/SqlTagUtils.js +39 -0
  22. package/browser/util/SqlTagUtils.js.map +1 -0
  23. package/data-source/DataSource.d.ts +8 -0
  24. package/data-source/DataSource.js +16 -0
  25. package/data-source/DataSource.js.map +1 -1
  26. package/driver/mongodb/MongoQueryRunner.d.ts +4 -0
  27. package/driver/mongodb/MongoQueryRunner.js +6 -0
  28. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  29. package/entity-manager/EntityManager.d.ts +8 -0
  30. package/entity-manager/EntityManager.js +16 -0
  31. package/entity-manager/EntityManager.js.map +1 -1
  32. package/package.json +1 -1
  33. package/query-runner/BaseQueryRunner.d.ts +8 -0
  34. package/query-runner/BaseQueryRunner.js +16 -0
  35. package/query-runner/BaseQueryRunner.js.map +1 -1
  36. package/query-runner/QueryResult.d.ts +2 -2
  37. package/query-runner/QueryResult.js.map +1 -1
  38. package/query-runner/QueryRunner.d.ts +8 -0
  39. package/query-runner/QueryRunner.js.map +1 -1
  40. package/repository/Repository.d.ts +9 -1
  41. package/repository/Repository.js +16 -0
  42. package/repository/Repository.js.map +1 -1
  43. package/util/SqlTagUtils.d.ts +11 -0
  44. package/util/SqlTagUtils.js +43 -0
  45. package/util/SqlTagUtils.js.map +1 -0
@@ -218,6 +218,14 @@ export declare class DataSource {
218
218
  * @see [Official docs](https://typeorm.io/data-source-api) for examples.
219
219
  */
220
220
  query<T = any>(query: string, parameters?: any[], queryRunner?: QueryRunner): Promise<T>;
221
+ /**
222
+ * Tagged template function that executes raw SQL query and returns raw database results.
223
+ * Template expressions are automatically transformed into database parameters.
224
+ * Raw query execution is supported only by relational databases (MongoDB is not supported).
225
+ * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.
226
+ * Example: dataSource.sql`SELECT * FROM table_name WHERE id = ${id}`
227
+ */
228
+ sql<T = any>(strings: TemplateStringsArray, ...values: unknown[]): Promise<T>;
221
229
  /**
222
230
  * Creates a new query builder that can be used to build a SQL query.
223
231
  */
@@ -14,6 +14,7 @@ import { ObjectUtils } from "../util/ObjectUtils";
14
14
  import { RelationIdLoader } from "../query-builder/RelationIdLoader";
15
15
  import { DriverUtils } from "../driver/DriverUtils";
16
16
  import { InstanceChecker } from "../util/InstanceChecker";
17
+ import { buildSqlTag } from "../util/SqlTagUtils";
17
18
  registerQueryBuilders();
18
19
  /**
19
20
  * DataSource is a pre-defined connection configuration to a specific database.
@@ -353,6 +354,21 @@ export class DataSource {
353
354
  await usedQueryRunner.release();
354
355
  }
355
356
  }
357
+ /**
358
+ * Tagged template function that executes raw SQL query and returns raw database results.
359
+ * Template expressions are automatically transformed into database parameters.
360
+ * Raw query execution is supported only by relational databases (MongoDB is not supported).
361
+ * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.
362
+ * Example: dataSource.sql`SELECT * FROM table_name WHERE id = ${id}`
363
+ */
364
+ async sql(strings, ...values) {
365
+ const { query, parameters } = buildSqlTag({
366
+ driver: this.driver,
367
+ strings: strings,
368
+ expressions: values,
369
+ });
370
+ return await this.query(query, parameters);
371
+ }
356
372
  /**
357
373
  * Creates a new query builder that can be used to build a SQL query.
358
374
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/data-source/DataSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAMxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EACH,kCAAkC,EAClC,8BAA8B,EAC9B,2BAA2B,EAC3B,uCAAuC,EACvC,YAAY,GACf,MAAM,UAAU,CAAA;AAMjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAIlE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAA;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAG1E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAGzD,qBAAqB,EAAE,CAAA;AAEvB;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IAkFnB,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,OAA0B;QArF7B,mBAAa,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAgDjD;;WAEG;QACM,eAAU,GAAyB,EAAE,CAAA;QAE9C;;WAEG;QACM,gBAAW,GAAqC,EAAE,CAAA;QAE3D;;WAEG;QACM,oBAAe,GAAqB,EAAE,CAAA;QAE/C;;;WAGG;QACM,uBAAkB,GAAG,IAAI,GAAG,EAAqC,CAAA;QAmBtE,qBAAqB,EAAE,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAA;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC,MAAM,CACpC,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CAAC,OAAO,CAAC,OAAO,CACvB,CAAA;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QACzC,IAAI,CAAC,cAAc;YACf,OAAO,CAAC,cAAc,IAAI,IAAI,qBAAqB,EAAE,CAAA;QACzD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,kBAAkB,CAAA;QACxE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK;YACjC,CAAC,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAC5C,CAAC,CAAC,SAAS,CAAA;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;IAC9B,CAAC;IAED,4EAA4E;IAC5E,mBAAmB;IACnB,4EAA4E;IAE5E;;;;OAIG;IACH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,aAAa,CAAA;IAC7B,CAAC;IAED;;;;;OAKG;IACH,IAAI,YAAY;QACZ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;YACnD,MAAM,IAAI,YAAY,CAClB,6DAA6D,CAChE,CAAA;QAEL,OAAO,IAAI,CAAC,OAA6B,CAAA;IAC7C,CAAC;IAED;;;;OAIG;IACH,IAAI,YAAY;QACZ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;YACnD,MAAM,IAAI,YAAY,CAClB,2DAA2D,CAC9D,CAAA;QAEL,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAC5E;;OAEG;IACH,UAAU,CAAC,OAAmC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEpC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC,MAAM,CACpC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EACrC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAC1C,CAAA;QACL,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAChD,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;QACtE,CAAC;QAED,8FAA8F;QAC9F,iGAAiG;QACjG,iEAAiE;QACjE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CACjD,IAAI,CAAC,OAAO,CACf,CAAC,QAAQ,CAAA;QACd,CAAC;QAED,oFAAoF;QAEpF,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QACZ,IAAI,IAAI,CAAC,aAAa;YAClB,MAAM,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE3D,yCAAyC;QACzC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QAE3B,6DAA6D;QAC7D,IAAI,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAA;QAEhE,kDAAkD;QAClD,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjD,IAAI,CAAC;YACD,2DAA2D;YAC3D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;YAE3B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YAEhC,yDAAyD;YACzD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YAEtD,wDAAwD;YACxD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa;gBAC1B,MAAM,IAAI,CAAC,aAAa,CAAC;oBACrB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;iBACtD,CAAC,CAAA;YAEN,wDAAwD;YACxD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,qGAAqG;YACrG,gCAAgC;YAChC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,MAAM,KAAK,CAAA;QACf,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,aAAa;YACnB,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvD,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QAE9B,mEAAmE;QACnE,IAAI,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAA;QAEnE,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;IACtD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACzB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,iBAA0B,KAAK;QAC7C,IAAI,CAAC,IAAI,CAAC,aAAa;YACnB,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvD,IAAI,cAAc;YAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAE7C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;QACvD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAED;;;;OAIG;IACH,cAAc;IACd,KAAK,CAAC,YAAY;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC5C,IAAI,CAAC;YACD,IACI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;gBACpC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc;gBAC3C,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EACzC,CAAC;gBACC,MAAM,SAAS,GAAa,EAAE,CAAA;gBAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IACI,QAAQ,CAAC,QAAQ;wBACjB,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAE3C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBACzC,CAAC,CAAC,CAAA;gBACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACjD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACxC,CAAC;gBAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,WAAW,CAAC,aAAa,EAAE,CAAA;gBACrC,CAAC;qBAAM,CAAC;oBACJ,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;wBAC/B,MAAM,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBAC7C,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,WAAW,CAAC,aAAa,EAAE,CAAA;YACrC,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,WAAW,CAAC,OAAO,EAAE,CAAA;QAC/B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAGnB;QACG,IAAI,CAAC,IAAI,CAAC,aAAa;YACnB,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACrD,iBAAiB,CAAC,WAAW;YACzB,OAAO,EAAE,WAAW;gBACpB,IAAI,CAAC,OAAO,EAAE,yBAAyB;gBACvC,KAAK,CAAA;QACT,iBAAiB,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;QAE3D,MAAM,iBAAiB,GACnB,MAAM,iBAAiB,CAAC,wBAAwB,EAAE,CAAA;QACtD,OAAO,iBAAiB,CAAA;IAC5B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,OAGvB;QACG,IAAI,CAAC,IAAI,CAAC,aAAa;YACnB,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACrD,iBAAiB,CAAC,WAAW;YACzB,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAA;QAC7C,iBAAiB,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;QAE3D,MAAM,iBAAiB,CAAC,iBAAiB,EAAE,CAAA;IAC/C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,CAAC;QACD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACrD,OAAO,MAAM,iBAAiB,CAAC,cAAc,EAAE,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAyB;QACjC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAyB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAA;QAE5D,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,aAAa,CACT,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CACb,MAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED;;;OAGG;IACH,kBAAkB,CACd,MAA4B;QAE5B,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;YACzC,MAAM,IAAI,YAAY,CAClB,8DAA8D,CACjE,CAAA;QAEL,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAQ,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAI,gBAA+B;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAC7D,CAAC;IAaD,KAAK,CAAC,WAAW,CACb,2BAEoD,EACpD,qBAAoE;QAEpE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAC3B,2BAAkC,EAClC,qBAA4B,CAC/B,CAAA;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CACP,KAAa,EACb,UAAkB,EAClB,WAAyB;QAEzB,IAAI,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;YAClD,MAAM,IAAI,YAAY,CAAC,sCAAsC,CAAC,CAAA;QAElE,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU;YACrC,MAAM,IAAI,uCAAuC,EAAE,CAAA;QAEvD,MAAM,eAAe,GAAG,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAE/D,IAAI,CAAC;YACD,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA,CAAC,oDAAoD;QAC9G,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,WAAW;gBAAE,MAAM,eAAe,CAAC,OAAO,EAAE,CAAA;QACrD,CAAC;IACL,CAAC;IAgBD;;OAEG;IACH,kBAAkB,CACd,cAAmD,EACnD,KAAc,EACd,WAAyB;QAEzB,IAAI,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;YAClD,MAAM,IAAI,YAAY,CAAC,4CAA4C,CAAC,CAAA;QAExE,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAC7B,cAAsC,CACzC,CAAA;YACD,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC;iBAC3C,MAAM,CAAC,KAAK,CAAC;iBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,kBAAkB,CACzB,IAAI,EACJ,cAAyC,CAC5C,CAAA;QACL,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAwB,QAAQ;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACrD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAChD,OAAO,WAAW,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,qBAAqB,CACjB,YAA+B,EAC/B,oBAA4B;QAE5B,MAAM,gBAAgB,GAClB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,4BAA4B,CACvD,oBAAoB,CACvB,CAAA;QACL,IAAI,CAAC,gBAAgB;YACjB,MAAM,IAAI,YAAY,CAClB,aAAa,oBAAoB,sBAAsB,YAAY,UAAU,CAChF,CAAA;QACL,IAAI,CAAC,gBAAgB,CAAC,YAAY;YAC9B,MAAM,IAAI,YAAY,CAClB,aAAa,YAAY,IAAI,oBAAoB,8CAA8C;gBAC3F,yDAAyD,CAChE,CAAA;QAEL,OAAO,gBAAgB,CAAC,sBAAsB,CAAA;IAClD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,WAAyB;QACzC,OAAO,IAAI,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC/D,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,YAAY,CAClB,MAAyB;QAEzB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,eAAe;YAAE,OAAO,eAAe,CAAA;QAE3C,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAClD,IACI,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC;gBACtC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,EACvC,CAAC;gBACC,OAAO,QAAQ,CAAA;YACnB,CAAC;YACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC7B,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;wBAChC,OAAO,QAAQ,CAAA;oBACnB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IACI,QAAQ,CAAC,IAAI,KAAK,MAAM;wBACxB,QAAQ,CAAC,SAAS,KAAK,MAAM,EAC/B,CAAC;wBACC,OAAO,QAAQ,CAAA;oBACnB,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IACI,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC;gBACpC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EACjC,CAAC;gBACC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAClC,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;wBACrC,OAAO,QAAQ,CAAA;oBACnB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IACI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;wBAC7B,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,EACpC,CAAC;wBACC,OAAO,QAAQ,CAAA;oBACnB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAA;IACpB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,cAAc;QAC1B,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAA;QACrE,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAA;QAE7D,wIAAwI;QACxI,MAAM,oBAAoB,GAAG,WAAW,CAAC,gBAAgB,CACrD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CACjC,CAAA;QACD,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,gBAAgB,CAChE,oBAAoB,CACvB,CAAA;QACD,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;QAEtD,yBAAyB;QACzB,MAAM,iBAAiB,GAAG,WAAW,CAAC,gBAAgB,CAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAC9B,CAAA;QACD,MAAM,eAAe,GACjB,MAAM,yBAAyB,CAAC,oBAAoB,CAChD,iBAAiB,CACpB,CAAA;QACL,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE;YACrB,eAAe,EAAE,eAAe;YAChC,kBAAkB,EAAE,IAAI,GAAG,CACvB,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CACjE;SACJ,CAAC,CAAA;QAEF,6BAA6B;QAC7B,MAAM,mBAAmB,GAAG,WAAW,CAAC,gBAAgB,CACpD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAChC,CAAA;QACD,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,eAAe,CAC9D,mBAAmB,CACtB,CAAA;QACD,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;QAEpD,iGAAiG;QACjG,uBAAuB,CAAC,YAAY,CAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CACvB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,KAAK,MAAM,CAC9C,EACD,IAAI,CAAC,MAAM,CACd,CAAA;QAED,0CAA0C;QAC1C,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;YAC3C,IACI,eAAe,CAAC,uBAAuB,CAAC,cAAc,CAAC,MAAM,CAAC,EAChE,CAAC;gBACC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YAC7C,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,8BAA8B;QAC1B,IACI,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EACjC,CAAC;YACC,MAAM,KAAK,GACP,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAGvB,CAAC,WAAW,CAAA;YACb,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAA;IAClB,CAAC;CACJ","file":"DataSource.js","sourcesContent":["import { Driver } from \"../driver/Driver\"\nimport { registerQueryBuilders } from \"../query-builder\"\nimport { Repository } from \"../repository/Repository\"\nimport { EntitySubscriberInterface } from \"../subscriber/EntitySubscriberInterface\"\nimport { EntityTarget } from \"../common/EntityTarget\"\nimport { ObjectType } from \"../common/ObjectType\"\nimport { EntityManager } from \"../entity-manager/EntityManager\"\nimport { DefaultNamingStrategy } from \"../naming-strategy/DefaultNamingStrategy\"\nimport {\n CannotConnectAlreadyConnectedError,\n CannotExecuteNotConnectedError,\n EntityMetadataNotFoundError,\n QueryRunnerProviderAlreadyReleasedError,\n TypeORMError,\n} from \"../error\"\nimport { TreeRepository } from \"../repository/TreeRepository\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { Logger } from \"../logger/Logger\"\nimport { MigrationInterface } from \"../migration/MigrationInterface\"\nimport { MigrationExecutor } from \"../migration/MigrationExecutor\"\nimport { Migration } from \"../migration/Migration\"\nimport { MongoRepository } from \"../repository/MongoRepository\"\nimport { MongoEntityManager } from \"../entity-manager/MongoEntityManager\"\nimport { EntityMetadataValidator } from \"../metadata-builder/EntityMetadataValidator\"\nimport { DataSourceOptions } from \"./DataSourceOptions\"\nimport { EntityManagerFactory } from \"../entity-manager/EntityManagerFactory\"\nimport { DriverFactory } from \"../driver/DriverFactory\"\nimport { ConnectionMetadataBuilder } from \"../connection/ConnectionMetadataBuilder\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\"\nimport { LoggerFactory } from \"../logger/LoggerFactory\"\nimport { QueryResultCacheFactory } from \"../cache/QueryResultCacheFactory\"\nimport { QueryResultCache } from \"../cache/QueryResultCache\"\nimport { SqljsEntityManager } from \"../entity-manager/SqljsEntityManager\"\nimport { RelationLoader } from \"../query-builder/RelationLoader\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport { IsolationLevel } from \"../driver/types/IsolationLevel\"\nimport { ReplicationMode } from \"../driver/types/ReplicationMode\"\nimport { RelationIdLoader } from \"../query-builder/RelationIdLoader\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\n\nregisterQueryBuilders()\n\n/**\n * DataSource is a pre-defined connection configuration to a specific database.\n * You can have multiple data sources connected (with multiple connections in it),\n * connected to multiple databases in your application.\n *\n * Before, it was called `Connection`, but now `Connection` is deprecated\n * because `Connection` isn't the best name for what it's actually is.\n */\nexport class DataSource {\n readonly \"@instanceof\" = Symbol.for(\"DataSource\")\n\n // -------------------------------------------------------------------------\n // Public Readonly Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection name.\n *\n * @deprecated we don't need names anymore since we are going to drop all related methods relying on this property.\n */\n readonly name: string\n\n /**\n * Connection options.\n */\n readonly options: DataSourceOptions\n\n /**\n * Indicates if DataSource is initialized or not.\n */\n readonly isInitialized: boolean\n\n /**\n * Database driver used by this connection.\n */\n driver: Driver\n\n /**\n * EntityManager of this connection.\n */\n readonly manager: EntityManager\n\n /**\n * Naming strategy used in the connection.\n */\n namingStrategy: NamingStrategyInterface\n\n /**\n * Name for the metadata table\n */\n readonly metadataTableName: string\n\n /**\n * Logger used to log orm events.\n */\n logger: Logger\n\n /**\n * Migration instances that are registered for this connection.\n */\n readonly migrations: MigrationInterface[] = []\n\n /**\n * Entity subscriber instances that are registered for this connection.\n */\n readonly subscribers: EntitySubscriberInterface<any>[] = []\n\n /**\n * All entity metadatas that are registered for this connection.\n */\n readonly entityMetadatas: EntityMetadata[] = []\n\n /**\n * All entity metadatas that are registered for this connection.\n * This is a copy of #.entityMetadatas property -> used for more performant searches.\n */\n readonly entityMetadatasMap = new Map<EntityTarget<any>, EntityMetadata>()\n\n /**\n * Used to work with query result cache.\n */\n queryResultCache?: QueryResultCache\n\n /**\n * Used to load relations and work with lazy relations.\n */\n readonly relationLoader: RelationLoader\n\n readonly relationIdLoader: RelationIdLoader\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: DataSourceOptions) {\n registerQueryBuilders()\n this.name = options.name || \"default\"\n this.options = options\n this.logger = new LoggerFactory().create(\n this.options.logger,\n this.options.logging,\n )\n this.driver = new DriverFactory().create(this)\n this.manager = this.createEntityManager()\n this.namingStrategy =\n options.namingStrategy || new DefaultNamingStrategy()\n this.metadataTableName = options.metadataTableName || \"typeorm_metadata\"\n this.queryResultCache = options.cache\n ? new QueryResultCacheFactory(this).create()\n : undefined\n this.relationLoader = new RelationLoader(this)\n this.relationIdLoader = new RelationIdLoader(this)\n this.isInitialized = false\n }\n\n // -------------------------------------------------------------------------\n // Public Accessors\n // -------------------------------------------------------------------------\n\n /**\n Indicates if DataSource is initialized or not.\n *\n * @deprecated use .isInitialized instead\n */\n get isConnected() {\n return this.isInitialized\n }\n\n /**\n * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\n * with any entity in this connection.\n *\n * Available only in mongodb connections.\n */\n get mongoManager(): MongoEntityManager {\n if (!InstanceChecker.isMongoEntityManager(this.manager))\n throw new TypeORMError(\n `MongoEntityManager is only available for MongoDB databases.`,\n )\n\n return this.manager as MongoEntityManager\n }\n\n /**\n * Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n *\n * Available only in connection with the sqljs driver.\n */\n get sqljsManager(): SqljsEntityManager {\n if (!InstanceChecker.isSqljsEntityManager(this.manager))\n throw new TypeORMError(\n `SqljsEntityManager is only available for Sqljs databases.`,\n )\n\n return this.manager\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Updates current connection options with provided options.\n */\n setOptions(options: Partial<DataSourceOptions>): this {\n Object.assign(this.options, options)\n\n if (options.logger || options.logging) {\n this.logger = new LoggerFactory().create(\n options.logger || this.options.logger,\n options.logging || this.options.logging,\n )\n }\n\n if (options.namingStrategy) {\n this.namingStrategy = options.namingStrategy\n }\n\n if (options.cache) {\n this.queryResultCache = new QueryResultCacheFactory(this).create()\n }\n\n // todo: we must update the database in the driver as well, if it was set by setOptions method\n // in the future we need to refactor the code and remove \"database\" from the driver, and instead\n // use database (and options) from a single place - data source.\n if (options.database) {\n this.driver.database = DriverUtils.buildDriverOptions(\n this.options,\n ).database\n }\n\n // todo: need to take a look if we need to update schema and other \"poor\" properties\n\n return this\n }\n\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n */\n async initialize(): Promise<this> {\n if (this.isInitialized)\n throw new CannotConnectAlreadyConnectedError(this.name)\n\n // connect to the database via its driver\n await this.driver.connect()\n\n // connect to the cache-specific database if cache is enabled\n if (this.queryResultCache) await this.queryResultCache.connect()\n\n // set connected status for the current connection\n ObjectUtils.assign(this, { isInitialized: true })\n\n try {\n // build all metadatas registered in the current connection\n await this.buildMetadatas()\n\n await this.driver.afterConnect()\n\n // if option is set - drop schema once connection is done\n if (this.options.dropSchema) await this.dropDatabase()\n\n // if option is set - automatically synchronize a schema\n if (this.options.migrationsRun)\n await this.runMigrations({\n transaction: this.options.migrationsTransactionMode,\n })\n\n // if option is set - automatically synchronize a schema\n if (this.options.synchronize) await this.synchronize()\n } catch (error) {\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n await this.destroy()\n throw error\n }\n\n return this\n }\n\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n *\n * @deprecated use .initialize method instead\n */\n async connect(): Promise<this> {\n return this.initialize()\n }\n\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n */\n async destroy(): Promise<void> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n await this.driver.disconnect()\n\n // disconnect from the cache-specific database if cache was enabled\n if (this.queryResultCache) await this.queryResultCache.disconnect()\n\n ObjectUtils.assign(this, { isInitialized: false })\n }\n\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n *\n * @deprecated use .destroy method instead\n */\n async close(): Promise<void> {\n return this.destroy()\n }\n\n /**\n * Creates database schema for all entities registered in this connection.\n * Can be used only after connection to the database is established.\n *\n * @param dropBeforeSync If set to true then it drops the database with all its tables and data\n */\n async synchronize(dropBeforeSync: boolean = false): Promise<void> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n if (dropBeforeSync) await this.dropDatabase()\n\n const schemaBuilder = this.driver.createSchemaBuilder()\n await schemaBuilder.build()\n }\n\n /**\n * Drops the database and all its data.\n * Be careful with this method on production since this method will erase all your database tables and their data.\n * Can be used only after connection to the database is established.\n */\n // TODO rename\n async dropDatabase(): Promise<void> {\n const queryRunner = this.createQueryRunner()\n try {\n if (\n this.driver.options.type === \"mssql\" ||\n DriverUtils.isMySQLFamily(this.driver) ||\n this.driver.options.type === \"aurora-mysql\" ||\n DriverUtils.isSQLiteFamily(this.driver)\n ) {\n const databases: string[] = []\n this.entityMetadatas.forEach((metadata) => {\n if (\n metadata.database &&\n databases.indexOf(metadata.database) === -1\n )\n databases.push(metadata.database)\n })\n if (databases.length === 0 && this.driver.database) {\n databases.push(this.driver.database)\n }\n\n if (databases.length === 0) {\n await queryRunner.clearDatabase()\n } else {\n for (const database of databases) {\n await queryRunner.clearDatabase(database)\n }\n }\n } else {\n await queryRunner.clearDatabase()\n }\n } finally {\n await queryRunner.release()\n }\n }\n\n /**\n * Runs all pending migrations.\n * Can be used only after connection to the database is established.\n */\n async runMigrations(options?: {\n transaction?: \"all\" | \"none\" | \"each\"\n fake?: boolean\n }): Promise<Migration[]> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n const migrationExecutor = new MigrationExecutor(this)\n migrationExecutor.transaction =\n options?.transaction ||\n this.options?.migrationsTransactionMode ||\n \"all\"\n migrationExecutor.fake = (options && options.fake) || false\n\n const successMigrations =\n await migrationExecutor.executePendingMigrations()\n return successMigrations\n }\n\n /**\n * Reverts last executed migration.\n * Can be used only after connection to the database is established.\n */\n async undoLastMigration(options?: {\n transaction?: \"all\" | \"none\" | \"each\"\n fake?: boolean\n }): Promise<void> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n const migrationExecutor = new MigrationExecutor(this)\n migrationExecutor.transaction =\n (options && options.transaction) || \"all\"\n migrationExecutor.fake = (options && options.fake) || false\n\n await migrationExecutor.undoLastMigration()\n }\n\n /**\n * Lists all migrations and whether they have been run.\n * Returns true if there are pending migrations\n */\n async showMigrations(): Promise<boolean> {\n if (!this.isInitialized) {\n throw new CannotExecuteNotConnectedError(this.name)\n }\n const migrationExecutor = new MigrationExecutor(this)\n return await migrationExecutor.showMigrations()\n }\n\n /**\n * Checks if entity metadata exist for the given entity class, target name or table name.\n */\n hasMetadata(target: EntityTarget<any>): boolean {\n return !!this.findMetadata(target)\n }\n\n /**\n * Gets entity metadata for the given entity class or schema name.\n */\n getMetadata(target: EntityTarget<any>): EntityMetadata {\n const metadata = this.findMetadata(target)\n if (!metadata) throw new EntityMetadataNotFoundError(target)\n\n return metadata\n }\n\n /**\n * Gets repository for the given entity.\n */\n getRepository<Entity extends ObjectLiteral>(\n target: EntityTarget<Entity>,\n ): Repository<Entity> {\n return this.manager.getRepository(target)\n }\n\n /**\n * Gets tree repository for the given entity class or name.\n * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator.\n */\n getTreeRepository<Entity extends ObjectLiteral>(\n target: EntityTarget<Entity>,\n ): TreeRepository<Entity> {\n return this.manager.getTreeRepository(target)\n }\n\n /**\n * Gets mongodb-specific repository for the given entity class or name.\n * Works only if connection is mongodb-specific.\n */\n getMongoRepository<Entity extends ObjectLiteral>(\n target: EntityTarget<Entity>,\n ): MongoRepository<Entity> {\n if (!(this.driver.options.type === \"mongodb\"))\n throw new TypeORMError(\n `You can use getMongoRepository only for MongoDB connections.`,\n )\n\n return this.manager.getRepository(target) as any\n }\n\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n *\n * @deprecated use Repository.extend function to create a custom repository\n */\n getCustomRepository<T>(customRepository: ObjectType<T>): T {\n return this.manager.getCustomRepository(customRepository)\n }\n\n /**\n * Wraps given function execution (and all operations made there) into a transaction.\n * All database operations must be executed using provided entity manager.\n */\n async transaction<T>(\n runInTransaction: (entityManager: EntityManager) => Promise<T>,\n ): Promise<T>\n async transaction<T>(\n isolationLevel: IsolationLevel,\n runInTransaction: (entityManager: EntityManager) => Promise<T>,\n ): Promise<T>\n async transaction<T>(\n isolationOrRunInTransaction:\n | IsolationLevel\n | ((entityManager: EntityManager) => Promise<T>),\n runInTransactionParam?: (entityManager: EntityManager) => Promise<T>,\n ): Promise<any> {\n return this.manager.transaction(\n isolationOrRunInTransaction as any,\n runInTransactionParam as any,\n )\n }\n\n /**\n * Executes raw SQL query and returns raw database results.\n *\n * @see [Official docs](https://typeorm.io/data-source-api) for examples.\n */\n async query<T = any>(\n query: string,\n parameters?: any[],\n queryRunner?: QueryRunner,\n ): Promise<T> {\n if (InstanceChecker.isMongoEntityManager(this.manager))\n throw new TypeORMError(`Queries aren't supported by MongoDB.`)\n\n if (queryRunner && queryRunner.isReleased)\n throw new QueryRunnerProviderAlreadyReleasedError()\n\n const usedQueryRunner = queryRunner || this.createQueryRunner()\n\n try {\n return await usedQueryRunner.query(query, parameters) // await is needed here because we are using finally\n } finally {\n if (!queryRunner) await usedQueryRunner.release()\n }\n }\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder<Entity extends ObjectLiteral>(\n entityClass: EntityTarget<Entity>,\n alias: string,\n queryRunner?: QueryRunner,\n ): SelectQueryBuilder<Entity>\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder(queryRunner?: QueryRunner): SelectQueryBuilder<any>\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder<Entity extends ObjectLiteral>(\n entityOrRunner?: EntityTarget<Entity> | QueryRunner,\n alias?: string,\n queryRunner?: QueryRunner,\n ): SelectQueryBuilder<Entity> {\n if (InstanceChecker.isMongoEntityManager(this.manager))\n throw new TypeORMError(`Query Builder is not supported by MongoDB.`)\n\n if (alias) {\n alias = DriverUtils.buildAlias(this.driver, undefined, alias)\n const metadata = this.getMetadata(\n entityOrRunner as EntityTarget<Entity>,\n )\n return new SelectQueryBuilder(this, queryRunner)\n .select(alias)\n .from(metadata.target, alias)\n } else {\n return new SelectQueryBuilder(\n this,\n entityOrRunner as QueryRunner | undefined,\n )\n }\n }\n\n /**\n * Creates a query runner used for perform queries on a single database connection.\n * Using query runners you can control your queries to execute using single database connection and\n * manually control your database transaction.\n *\n * Mode is used in replication mode and indicates whatever you want to connect\n * to master database or any of slave databases.\n * If you perform writes you must use master database,\n * if you perform reads you can use slave databases.\n */\n createQueryRunner(mode: ReplicationMode = \"master\"): QueryRunner {\n const queryRunner = this.driver.createQueryRunner(mode)\n const manager = this.createEntityManager(queryRunner)\n Object.assign(queryRunner, { manager: manager })\n return queryRunner\n }\n\n /**\n * Gets entity metadata of the junction table (many-to-many table).\n */\n getManyToManyMetadata(\n entityTarget: EntityTarget<any>,\n relationPropertyPath: string,\n ) {\n const relationMetadata =\n this.getMetadata(entityTarget).findRelationWithPropertyPath(\n relationPropertyPath,\n )\n if (!relationMetadata)\n throw new TypeORMError(\n `Relation \"${relationPropertyPath}\" was not found in ${entityTarget} entity.`,\n )\n if (!relationMetadata.isManyToMany)\n throw new TypeORMError(\n `Relation \"${entityTarget}#${relationPropertyPath}\" does not have a many-to-many relationship.` +\n `You can use this method only on many-to-many relations.`,\n )\n\n return relationMetadata.junctionEntityMetadata\n }\n\n /**\n * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory.\n */\n createEntityManager(queryRunner?: QueryRunner): EntityManager {\n return new EntityManagerFactory().create(this, queryRunner)\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Finds exist entity metadata by the given entity class, target name or table name.\n */\n protected findMetadata(\n target: EntityTarget<any>,\n ): EntityMetadata | undefined {\n const metadataFromMap = this.entityMetadatasMap.get(target)\n if (metadataFromMap) return metadataFromMap\n\n for (const [_, metadata] of this.entityMetadatasMap) {\n if (\n InstanceChecker.isEntitySchema(target) &&\n metadata.name === target.options.name\n ) {\n return metadata\n }\n if (typeof target === \"string\") {\n if (target.indexOf(\".\") !== -1) {\n if (metadata.tablePath === target) {\n return metadata\n }\n } else {\n if (\n metadata.name === target ||\n metadata.tableName === target\n ) {\n return metadata\n }\n }\n }\n if (\n ObjectUtils.isObjectWithName(target) &&\n typeof target.name === \"string\"\n ) {\n if (target.name.indexOf(\".\") !== -1) {\n if (metadata.tablePath === target.name) {\n return metadata\n }\n } else {\n if (\n metadata.name === target.name ||\n metadata.tableName === target.name\n ) {\n return metadata\n }\n }\n }\n }\n\n return undefined\n }\n\n /**\n * Builds metadatas for all registered classes inside this connection.\n */\n protected async buildMetadatas(): Promise<void> {\n const connectionMetadataBuilder = new ConnectionMetadataBuilder(this)\n const entityMetadataValidator = new EntityMetadataValidator()\n\n // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)\n const flattenedSubscribers = ObjectUtils.mixedListToArray(\n this.options.subscribers || [],\n )\n const subscribers = await connectionMetadataBuilder.buildSubscribers(\n flattenedSubscribers,\n )\n ObjectUtils.assign(this, { subscribers: subscribers })\n\n // build entity metadatas\n const flattenedEntities = ObjectUtils.mixedListToArray(\n this.options.entities || [],\n )\n const entityMetadatas =\n await connectionMetadataBuilder.buildEntityMetadatas(\n flattenedEntities,\n )\n ObjectUtils.assign(this, {\n entityMetadatas: entityMetadatas,\n entityMetadatasMap: new Map(\n entityMetadatas.map((metadata) => [metadata.target, metadata]),\n ),\n })\n\n // create migration instances\n const flattenedMigrations = ObjectUtils.mixedListToArray(\n this.options.migrations || [],\n )\n const migrations = await connectionMetadataBuilder.buildMigrations(\n flattenedMigrations,\n )\n ObjectUtils.assign(this, { migrations: migrations })\n\n // validate all created entity metadatas to make sure user created entities are valid and correct\n entityMetadataValidator.validateMany(\n this.entityMetadatas.filter(\n (metadata) => metadata.tableType !== \"view\",\n ),\n this.driver,\n )\n\n // set current data source to the entities\n for (const entityMetadata of entityMetadatas) {\n if (\n InstanceChecker.isBaseEntityConstructor(entityMetadata.target)\n ) {\n entityMetadata.target.useDataSource(this)\n }\n }\n }\n\n /**\n * Get the replication mode SELECT queries should use for this datasource by default\n */\n defaultReplicationModeForReads(): ReplicationMode {\n if (\n \"replication\" in this.driver.options &&\n this.driver.options.replication\n ) {\n const value = (\n this.driver.options.replication as {\n defaultMode?: ReplicationMode\n }\n ).defaultMode\n if (value) {\n return value\n }\n }\n return \"slave\"\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/data-source/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import { Driver } from \"../driver/Driver\"\nimport { registerQueryBuilders } from \"../query-builder\"\nimport { Repository } from \"../repository/Repository\"\nimport { EntitySubscriberInterface } from \"../subscriber/EntitySubscriberInterface\"\nimport { EntityTarget } from \"../common/EntityTarget\"\nimport { ObjectType } from \"../common/ObjectType\"\nimport { EntityManager } from \"../entity-manager/EntityManager\"\nimport { DefaultNamingStrategy } from \"../naming-strategy/DefaultNamingStrategy\"\nimport {\n CannotConnectAlreadyConnectedError,\n CannotExecuteNotConnectedError,\n EntityMetadataNotFoundError,\n QueryRunnerProviderAlreadyReleasedError,\n TypeORMError,\n} from \"../error\"\nimport { TreeRepository } from \"../repository/TreeRepository\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { Logger } from \"../logger/Logger\"\nimport { MigrationInterface } from \"../migration/MigrationInterface\"\nimport { MigrationExecutor } from \"../migration/MigrationExecutor\"\nimport { Migration } from \"../migration/Migration\"\nimport { MongoRepository } from \"../repository/MongoRepository\"\nimport { MongoEntityManager } from \"../entity-manager/MongoEntityManager\"\nimport { EntityMetadataValidator } from \"../metadata-builder/EntityMetadataValidator\"\nimport { DataSourceOptions } from \"./DataSourceOptions\"\nimport { EntityManagerFactory } from \"../entity-manager/EntityManagerFactory\"\nimport { DriverFactory } from \"../driver/DriverFactory\"\nimport { ConnectionMetadataBuilder } from \"../connection/ConnectionMetadataBuilder\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\"\nimport { LoggerFactory } from \"../logger/LoggerFactory\"\nimport { QueryResultCacheFactory } from \"../cache/QueryResultCacheFactory\"\nimport { QueryResultCache } from \"../cache/QueryResultCache\"\nimport { SqljsEntityManager } from \"../entity-manager/SqljsEntityManager\"\nimport { RelationLoader } from \"../query-builder/RelationLoader\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport { IsolationLevel } from \"../driver/types/IsolationLevel\"\nimport { ReplicationMode } from \"../driver/types/ReplicationMode\"\nimport { RelationIdLoader } from \"../query-builder/RelationIdLoader\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { buildSqlTag } from \"../util/SqlTagUtils\"\n\nregisterQueryBuilders()\n\n/**\n * DataSource is a pre-defined connection configuration to a specific database.\n * You can have multiple data sources connected (with multiple connections in it),\n * connected to multiple databases in your application.\n *\n * Before, it was called `Connection`, but now `Connection` is deprecated\n * because `Connection` isn't the best name for what it's actually is.\n */\nexport class DataSource {\n readonly \"@instanceof\" = Symbol.for(\"DataSource\")\n\n // -------------------------------------------------------------------------\n // Public Readonly Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection name.\n *\n * @deprecated we don't need names anymore since we are going to drop all related methods relying on this property.\n */\n readonly name: string\n\n /**\n * Connection options.\n */\n readonly options: DataSourceOptions\n\n /**\n * Indicates if DataSource is initialized or not.\n */\n readonly isInitialized: boolean\n\n /**\n * Database driver used by this connection.\n */\n driver: Driver\n\n /**\n * EntityManager of this connection.\n */\n readonly manager: EntityManager\n\n /**\n * Naming strategy used in the connection.\n */\n namingStrategy: NamingStrategyInterface\n\n /**\n * Name for the metadata table\n */\n readonly metadataTableName: string\n\n /**\n * Logger used to log orm events.\n */\n logger: Logger\n\n /**\n * Migration instances that are registered for this connection.\n */\n readonly migrations: MigrationInterface[] = []\n\n /**\n * Entity subscriber instances that are registered for this connection.\n */\n readonly subscribers: EntitySubscriberInterface<any>[] = []\n\n /**\n * All entity metadatas that are registered for this connection.\n */\n readonly entityMetadatas: EntityMetadata[] = []\n\n /**\n * All entity metadatas that are registered for this connection.\n * This is a copy of #.entityMetadatas property -> used for more performant searches.\n */\n readonly entityMetadatasMap = new Map<EntityTarget<any>, EntityMetadata>()\n\n /**\n * Used to work with query result cache.\n */\n queryResultCache?: QueryResultCache\n\n /**\n * Used to load relations and work with lazy relations.\n */\n readonly relationLoader: RelationLoader\n\n readonly relationIdLoader: RelationIdLoader\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: DataSourceOptions) {\n registerQueryBuilders()\n this.name = options.name || \"default\"\n this.options = options\n this.logger = new LoggerFactory().create(\n this.options.logger,\n this.options.logging,\n )\n this.driver = new DriverFactory().create(this)\n this.manager = this.createEntityManager()\n this.namingStrategy =\n options.namingStrategy || new DefaultNamingStrategy()\n this.metadataTableName = options.metadataTableName || \"typeorm_metadata\"\n this.queryResultCache = options.cache\n ? new QueryResultCacheFactory(this).create()\n : undefined\n this.relationLoader = new RelationLoader(this)\n this.relationIdLoader = new RelationIdLoader(this)\n this.isInitialized = false\n }\n\n // -------------------------------------------------------------------------\n // Public Accessors\n // -------------------------------------------------------------------------\n\n /**\n Indicates if DataSource is initialized or not.\n *\n * @deprecated use .isInitialized instead\n */\n get isConnected() {\n return this.isInitialized\n }\n\n /**\n * Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\n * with any entity in this connection.\n *\n * Available only in mongodb connections.\n */\n get mongoManager(): MongoEntityManager {\n if (!InstanceChecker.isMongoEntityManager(this.manager))\n throw new TypeORMError(\n `MongoEntityManager is only available for MongoDB databases.`,\n )\n\n return this.manager as MongoEntityManager\n }\n\n /**\n * Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n *\n * Available only in connection with the sqljs driver.\n */\n get sqljsManager(): SqljsEntityManager {\n if (!InstanceChecker.isSqljsEntityManager(this.manager))\n throw new TypeORMError(\n `SqljsEntityManager is only available for Sqljs databases.`,\n )\n\n return this.manager\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n /**\n * Updates current connection options with provided options.\n */\n setOptions(options: Partial<DataSourceOptions>): this {\n Object.assign(this.options, options)\n\n if (options.logger || options.logging) {\n this.logger = new LoggerFactory().create(\n options.logger || this.options.logger,\n options.logging || this.options.logging,\n )\n }\n\n if (options.namingStrategy) {\n this.namingStrategy = options.namingStrategy\n }\n\n if (options.cache) {\n this.queryResultCache = new QueryResultCacheFactory(this).create()\n }\n\n // todo: we must update the database in the driver as well, if it was set by setOptions method\n // in the future we need to refactor the code and remove \"database\" from the driver, and instead\n // use database (and options) from a single place - data source.\n if (options.database) {\n this.driver.database = DriverUtils.buildDriverOptions(\n this.options,\n ).database\n }\n\n // todo: need to take a look if we need to update schema and other \"poor\" properties\n\n return this\n }\n\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n */\n async initialize(): Promise<this> {\n if (this.isInitialized)\n throw new CannotConnectAlreadyConnectedError(this.name)\n\n // connect to the database via its driver\n await this.driver.connect()\n\n // connect to the cache-specific database if cache is enabled\n if (this.queryResultCache) await this.queryResultCache.connect()\n\n // set connected status for the current connection\n ObjectUtils.assign(this, { isInitialized: true })\n\n try {\n // build all metadatas registered in the current connection\n await this.buildMetadatas()\n\n await this.driver.afterConnect()\n\n // if option is set - drop schema once connection is done\n if (this.options.dropSchema) await this.dropDatabase()\n\n // if option is set - automatically synchronize a schema\n if (this.options.migrationsRun)\n await this.runMigrations({\n transaction: this.options.migrationsTransactionMode,\n })\n\n // if option is set - automatically synchronize a schema\n if (this.options.synchronize) await this.synchronize()\n } catch (error) {\n // if for some reason build metadata fail (for example validation error during entity metadata check)\n // connection needs to be closed\n await this.destroy()\n throw error\n }\n\n return this\n }\n\n /**\n * Performs connection to the database.\n * This method should be called once on application bootstrap.\n * This method not necessarily creates database connection (depend on database type),\n * but it also can setup a connection pool with database to use.\n *\n * @deprecated use .initialize method instead\n */\n async connect(): Promise<this> {\n return this.initialize()\n }\n\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n */\n async destroy(): Promise<void> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n await this.driver.disconnect()\n\n // disconnect from the cache-specific database if cache was enabled\n if (this.queryResultCache) await this.queryResultCache.disconnect()\n\n ObjectUtils.assign(this, { isInitialized: false })\n }\n\n /**\n * Closes connection with the database.\n * Once connection is closed, you cannot use repositories or perform any operations except opening connection again.\n *\n * @deprecated use .destroy method instead\n */\n async close(): Promise<void> {\n return this.destroy()\n }\n\n /**\n * Creates database schema for all entities registered in this connection.\n * Can be used only after connection to the database is established.\n *\n * @param dropBeforeSync If set to true then it drops the database with all its tables and data\n */\n async synchronize(dropBeforeSync: boolean = false): Promise<void> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n if (dropBeforeSync) await this.dropDatabase()\n\n const schemaBuilder = this.driver.createSchemaBuilder()\n await schemaBuilder.build()\n }\n\n /**\n * Drops the database and all its data.\n * Be careful with this method on production since this method will erase all your database tables and their data.\n * Can be used only after connection to the database is established.\n */\n // TODO rename\n async dropDatabase(): Promise<void> {\n const queryRunner = this.createQueryRunner()\n try {\n if (\n this.driver.options.type === \"mssql\" ||\n DriverUtils.isMySQLFamily(this.driver) ||\n this.driver.options.type === \"aurora-mysql\" ||\n DriverUtils.isSQLiteFamily(this.driver)\n ) {\n const databases: string[] = []\n this.entityMetadatas.forEach((metadata) => {\n if (\n metadata.database &&\n databases.indexOf(metadata.database) === -1\n )\n databases.push(metadata.database)\n })\n if (databases.length === 0 && this.driver.database) {\n databases.push(this.driver.database)\n }\n\n if (databases.length === 0) {\n await queryRunner.clearDatabase()\n } else {\n for (const database of databases) {\n await queryRunner.clearDatabase(database)\n }\n }\n } else {\n await queryRunner.clearDatabase()\n }\n } finally {\n await queryRunner.release()\n }\n }\n\n /**\n * Runs all pending migrations.\n * Can be used only after connection to the database is established.\n */\n async runMigrations(options?: {\n transaction?: \"all\" | \"none\" | \"each\"\n fake?: boolean\n }): Promise<Migration[]> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n const migrationExecutor = new MigrationExecutor(this)\n migrationExecutor.transaction =\n options?.transaction ||\n this.options?.migrationsTransactionMode ||\n \"all\"\n migrationExecutor.fake = (options && options.fake) || false\n\n const successMigrations =\n await migrationExecutor.executePendingMigrations()\n return successMigrations\n }\n\n /**\n * Reverts last executed migration.\n * Can be used only after connection to the database is established.\n */\n async undoLastMigration(options?: {\n transaction?: \"all\" | \"none\" | \"each\"\n fake?: boolean\n }): Promise<void> {\n if (!this.isInitialized)\n throw new CannotExecuteNotConnectedError(this.name)\n\n const migrationExecutor = new MigrationExecutor(this)\n migrationExecutor.transaction =\n (options && options.transaction) || \"all\"\n migrationExecutor.fake = (options && options.fake) || false\n\n await migrationExecutor.undoLastMigration()\n }\n\n /**\n * Lists all migrations and whether they have been run.\n * Returns true if there are pending migrations\n */\n async showMigrations(): Promise<boolean> {\n if (!this.isInitialized) {\n throw new CannotExecuteNotConnectedError(this.name)\n }\n const migrationExecutor = new MigrationExecutor(this)\n return await migrationExecutor.showMigrations()\n }\n\n /**\n * Checks if entity metadata exist for the given entity class, target name or table name.\n */\n hasMetadata(target: EntityTarget<any>): boolean {\n return !!this.findMetadata(target)\n }\n\n /**\n * Gets entity metadata for the given entity class or schema name.\n */\n getMetadata(target: EntityTarget<any>): EntityMetadata {\n const metadata = this.findMetadata(target)\n if (!metadata) throw new EntityMetadataNotFoundError(target)\n\n return metadata\n }\n\n /**\n * Gets repository for the given entity.\n */\n getRepository<Entity extends ObjectLiteral>(\n target: EntityTarget<Entity>,\n ): Repository<Entity> {\n return this.manager.getRepository(target)\n }\n\n /**\n * Gets tree repository for the given entity class or name.\n * Only tree-type entities can have a TreeRepository, like ones decorated with @Tree decorator.\n */\n getTreeRepository<Entity extends ObjectLiteral>(\n target: EntityTarget<Entity>,\n ): TreeRepository<Entity> {\n return this.manager.getTreeRepository(target)\n }\n\n /**\n * Gets mongodb-specific repository for the given entity class or name.\n * Works only if connection is mongodb-specific.\n */\n getMongoRepository<Entity extends ObjectLiteral>(\n target: EntityTarget<Entity>,\n ): MongoRepository<Entity> {\n if (!(this.driver.options.type === \"mongodb\"))\n throw new TypeORMError(\n `You can use getMongoRepository only for MongoDB connections.`,\n )\n\n return this.manager.getRepository(target) as any\n }\n\n /**\n * Gets custom entity repository marked with @EntityRepository decorator.\n *\n * @deprecated use Repository.extend function to create a custom repository\n */\n getCustomRepository<T>(customRepository: ObjectType<T>): T {\n return this.manager.getCustomRepository(customRepository)\n }\n\n /**\n * Wraps given function execution (and all operations made there) into a transaction.\n * All database operations must be executed using provided entity manager.\n */\n async transaction<T>(\n runInTransaction: (entityManager: EntityManager) => Promise<T>,\n ): Promise<T>\n async transaction<T>(\n isolationLevel: IsolationLevel,\n runInTransaction: (entityManager: EntityManager) => Promise<T>,\n ): Promise<T>\n async transaction<T>(\n isolationOrRunInTransaction:\n | IsolationLevel\n | ((entityManager: EntityManager) => Promise<T>),\n runInTransactionParam?: (entityManager: EntityManager) => Promise<T>,\n ): Promise<any> {\n return this.manager.transaction(\n isolationOrRunInTransaction as any,\n runInTransactionParam as any,\n )\n }\n\n /**\n * Executes raw SQL query and returns raw database results.\n *\n * @see [Official docs](https://typeorm.io/data-source-api) for examples.\n */\n async query<T = any>(\n query: string,\n parameters?: any[],\n queryRunner?: QueryRunner,\n ): Promise<T> {\n if (InstanceChecker.isMongoEntityManager(this.manager))\n throw new TypeORMError(`Queries aren't supported by MongoDB.`)\n\n if (queryRunner && queryRunner.isReleased)\n throw new QueryRunnerProviderAlreadyReleasedError()\n\n const usedQueryRunner = queryRunner || this.createQueryRunner()\n\n try {\n return await usedQueryRunner.query(query, parameters) // await is needed here because we are using finally\n } finally {\n if (!queryRunner) await usedQueryRunner.release()\n }\n }\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n * Example: dataSource.sql`SELECT * FROM table_name WHERE id = ${id}`\n */\n async sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T> {\n const { query, parameters } = buildSqlTag({\n driver: this.driver,\n strings: strings,\n expressions: values,\n })\n\n return await this.query(query, parameters)\n }\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder<Entity extends ObjectLiteral>(\n entityClass: EntityTarget<Entity>,\n alias: string,\n queryRunner?: QueryRunner,\n ): SelectQueryBuilder<Entity>\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder(queryRunner?: QueryRunner): SelectQueryBuilder<any>\n\n /**\n * Creates a new query builder that can be used to build a SQL query.\n */\n createQueryBuilder<Entity extends ObjectLiteral>(\n entityOrRunner?: EntityTarget<Entity> | QueryRunner,\n alias?: string,\n queryRunner?: QueryRunner,\n ): SelectQueryBuilder<Entity> {\n if (InstanceChecker.isMongoEntityManager(this.manager))\n throw new TypeORMError(`Query Builder is not supported by MongoDB.`)\n\n if (alias) {\n alias = DriverUtils.buildAlias(this.driver, undefined, alias)\n const metadata = this.getMetadata(\n entityOrRunner as EntityTarget<Entity>,\n )\n return new SelectQueryBuilder(this, queryRunner)\n .select(alias)\n .from(metadata.target, alias)\n } else {\n return new SelectQueryBuilder(\n this,\n entityOrRunner as QueryRunner | undefined,\n )\n }\n }\n\n /**\n * Creates a query runner used for perform queries on a single database connection.\n * Using query runners you can control your queries to execute using single database connection and\n * manually control your database transaction.\n *\n * Mode is used in replication mode and indicates whatever you want to connect\n * to master database or any of slave databases.\n * If you perform writes you must use master database,\n * if you perform reads you can use slave databases.\n */\n createQueryRunner(mode: ReplicationMode = \"master\"): QueryRunner {\n const queryRunner = this.driver.createQueryRunner(mode)\n const manager = this.createEntityManager(queryRunner)\n Object.assign(queryRunner, { manager: manager })\n return queryRunner\n }\n\n /**\n * Gets entity metadata of the junction table (many-to-many table).\n */\n getManyToManyMetadata(\n entityTarget: EntityTarget<any>,\n relationPropertyPath: string,\n ) {\n const relationMetadata =\n this.getMetadata(entityTarget).findRelationWithPropertyPath(\n relationPropertyPath,\n )\n if (!relationMetadata)\n throw new TypeORMError(\n `Relation \"${relationPropertyPath}\" was not found in ${entityTarget} entity.`,\n )\n if (!relationMetadata.isManyToMany)\n throw new TypeORMError(\n `Relation \"${entityTarget}#${relationPropertyPath}\" does not have a many-to-many relationship.` +\n `You can use this method only on many-to-many relations.`,\n )\n\n return relationMetadata.junctionEntityMetadata\n }\n\n /**\n * Creates an Entity Manager for the current connection with the help of the EntityManagerFactory.\n */\n createEntityManager(queryRunner?: QueryRunner): EntityManager {\n return new EntityManagerFactory().create(this, queryRunner)\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Finds exist entity metadata by the given entity class, target name or table name.\n */\n protected findMetadata(\n target: EntityTarget<any>,\n ): EntityMetadata | undefined {\n const metadataFromMap = this.entityMetadatasMap.get(target)\n if (metadataFromMap) return metadataFromMap\n\n for (const [_, metadata] of this.entityMetadatasMap) {\n if (\n InstanceChecker.isEntitySchema(target) &&\n metadata.name === target.options.name\n ) {\n return metadata\n }\n if (typeof target === \"string\") {\n if (target.indexOf(\".\") !== -1) {\n if (metadata.tablePath === target) {\n return metadata\n }\n } else {\n if (\n metadata.name === target ||\n metadata.tableName === target\n ) {\n return metadata\n }\n }\n }\n if (\n ObjectUtils.isObjectWithName(target) &&\n typeof target.name === \"string\"\n ) {\n if (target.name.indexOf(\".\") !== -1) {\n if (metadata.tablePath === target.name) {\n return metadata\n }\n } else {\n if (\n metadata.name === target.name ||\n metadata.tableName === target.name\n ) {\n return metadata\n }\n }\n }\n }\n\n return undefined\n }\n\n /**\n * Builds metadatas for all registered classes inside this connection.\n */\n protected async buildMetadatas(): Promise<void> {\n const connectionMetadataBuilder = new ConnectionMetadataBuilder(this)\n const entityMetadataValidator = new EntityMetadataValidator()\n\n // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)\n const flattenedSubscribers = ObjectUtils.mixedListToArray(\n this.options.subscribers || [],\n )\n const subscribers = await connectionMetadataBuilder.buildSubscribers(\n flattenedSubscribers,\n )\n ObjectUtils.assign(this, { subscribers: subscribers })\n\n // build entity metadatas\n const flattenedEntities = ObjectUtils.mixedListToArray(\n this.options.entities || [],\n )\n const entityMetadatas =\n await connectionMetadataBuilder.buildEntityMetadatas(\n flattenedEntities,\n )\n ObjectUtils.assign(this, {\n entityMetadatas: entityMetadatas,\n entityMetadatasMap: new Map(\n entityMetadatas.map((metadata) => [metadata.target, metadata]),\n ),\n })\n\n // create migration instances\n const flattenedMigrations = ObjectUtils.mixedListToArray(\n this.options.migrations || [],\n )\n const migrations = await connectionMetadataBuilder.buildMigrations(\n flattenedMigrations,\n )\n ObjectUtils.assign(this, { migrations: migrations })\n\n // validate all created entity metadatas to make sure user created entities are valid and correct\n entityMetadataValidator.validateMany(\n this.entityMetadatas.filter(\n (metadata) => metadata.tableType !== \"view\",\n ),\n this.driver,\n )\n\n // set current data source to the entities\n for (const entityMetadata of entityMetadatas) {\n if (\n InstanceChecker.isBaseEntityConstructor(entityMetadata.target)\n ) {\n entityMetadata.target.useDataSource(this)\n }\n }\n }\n\n /**\n * Get the replication mode SELECT queries should use for this datasource by default\n */\n defaultReplicationModeForReads(): ReplicationMode {\n if (\n \"replication\" in this.driver.options &&\n this.driver.options.replication\n ) {\n const value = (\n this.driver.options.replication as {\n defaultMode?: ReplicationMode\n }\n ).defaultMode\n if (value) {\n return value\n }\n }\n return \"slave\"\n }\n}\n"],"sourceRoot":".."}
@@ -218,6 +218,10 @@ export declare class MongoQueryRunner implements QueryRunner {
218
218
  * Executes a given SQL query.
219
219
  */
220
220
  query(query: string, parameters?: any[]): Promise<any>;
221
+ /**
222
+ * Unsupported - Executing SQL query is not supported by MongoDB driver.
223
+ */
224
+ sql(strings: TemplateStringsArray, ...values: unknown[]): Promise<any>;
221
225
  /**
222
226
  * Returns raw data stream.
223
227
  */
@@ -271,6 +271,12 @@ export class MongoQueryRunner {
271
271
  query(query, parameters) {
272
272
  throw new TypeORMError(`Executing SQL query is not supported by MongoDB driver.`);
273
273
  }
274
+ /**
275
+ * Unsupported - Executing SQL query is not supported by MongoDB driver.
276
+ */
277
+ async sql(strings, ...values) {
278
+ throw new TypeORMError(`Executing SQL query is not supported by MongoDB driver.`);
279
+ }
274
280
  /**
275
281
  * Returns raw data stream.
276
282
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/mongodb/MongoQueryRunner.ts"],"names":[],"mappings":"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","file":"MongoQueryRunner.js","sourcesContent":["import { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { View } from \"../../schema-builder/view/View\"\n// import {Connection} from \"../../connection/Connection\";\nimport { ReadStream } from \"../../platform/PlatformTools\"\nimport { MongoEntityManager } from \"../../entity-manager/MongoEntityManager\"\nimport { SqlInMemory } from \"../SqlInMemory\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { TypeORMError } from \"../../error\"\n\nimport {\n BulkWriteResult,\n AggregationCursor,\n MongoClient,\n Collection,\n FindCursor,\n Document,\n AggregateOptions,\n AnyBulkWriteOperation,\n BulkWriteOptions,\n Filter,\n CountOptions,\n CountDocumentsOptions,\n IndexSpecification,\n CreateIndexesOptions,\n IndexDescription,\n DeleteResult,\n DeleteOptions,\n CommandOperationOptions,\n FindOneAndDeleteOptions,\n FindOneAndReplaceOptions,\n UpdateFilter,\n FindOneAndUpdateOptions,\n RenameOptions,\n ReplaceOptions,\n UpdateResult,\n CollStats,\n CollStatsOptions,\n ChangeStreamOptions,\n ChangeStream,\n UpdateOptions,\n ListIndexesOptions,\n ListIndexesCursor,\n OptionalId,\n InsertOneOptions,\n InsertOneResult,\n InsertManyResult,\n UnorderedBulkOperation,\n OrderedBulkOperation,\n IndexInformationOptions,\n} from \"../../driver/mongodb/typings\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\n\n/**\n * Runs queries on a single MongoDB connection.\n */\nexport class MongoQueryRunner implements QueryRunner {\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by this query runner.\n */\n connection: DataSource\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster\n\n /**\n * Entity manager working only with current query runner.\n */\n manager: MongoEntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n * Always false for mongodb since mongodb has a single query executor instance.\n */\n isReleased = false\n\n /**\n * Indicates if transaction is active in this query executor.\n * Always false for mongodb since mongodb does not support transactions.\n */\n isTransactionActive = false\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {}\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[]\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[]\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n databaseConnection: MongoClient\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource, databaseConnection: MongoClient) {\n this.connection = connection\n this.databaseConnection = databaseConnection\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Creates a cursor for a query that can be used to iterate over results from MongoDB.\n */\n cursor(collectionName: string, filter: Filter<Document>): FindCursor<any> {\n return this.getCollection(collectionName).find(filter || {})\n }\n\n /**\n * Execute an aggregation framework pipeline against the collection.\n */\n aggregate(\n collectionName: string,\n pipeline: Document[],\n options?: AggregateOptions,\n ): AggregationCursor<any> {\n return this.getCollection(collectionName).aggregate(\n pipeline,\n options || {},\n )\n }\n\n /**\n * Perform a bulkWrite operation without a fluent API.\n */\n async bulkWrite(\n collectionName: string,\n operations: AnyBulkWriteOperation<Document>[],\n options?: BulkWriteOptions,\n ): Promise<BulkWriteResult> {\n return await this.getCollection(collectionName).bulkWrite(\n operations,\n options || {},\n )\n }\n\n /**\n * Count number of matching documents in the db to a query.\n */\n async count(\n collectionName: string,\n filter: Filter<Document>,\n options?: CountOptions,\n ): Promise<number> {\n return this.getCollection(collectionName).count(\n filter || {},\n options || {},\n )\n }\n\n /**\n * Count number of matching documents in the db to a query.\n */\n async countDocuments(\n collectionName: string,\n filter: Filter<Document>,\n options?: CountDocumentsOptions,\n ): Promise<any> {\n return this.getCollection(collectionName).countDocuments(\n filter || {},\n options || {},\n )\n }\n\n /**\n * Creates an index on the db and collection.\n */\n async createCollectionIndex(\n collectionName: string,\n indexSpec: IndexSpecification,\n options?: CreateIndexesOptions,\n ): Promise<string> {\n return this.getCollection(collectionName).createIndex(\n indexSpec,\n options || {},\n )\n }\n\n /**\n * Creates multiple indexes in the collection, this method is only supported for MongoDB 2.6 or higher.\n * Earlier version of MongoDB will throw a command not supported error. Index specifications are defined at http://docs.mongodb.org/manual/reference/command/createIndexes/.\n */\n async createCollectionIndexes(\n collectionName: string,\n indexSpecs: IndexDescription[],\n ): Promise<string[]> {\n return this.getCollection(collectionName).createIndexes(indexSpecs)\n }\n\n /**\n * Delete multiple documents on MongoDB.\n */\n async deleteMany(\n collectionName: string,\n filter: Filter<Document>,\n options: DeleteOptions,\n ): Promise<DeleteResult> {\n return this.getCollection(collectionName).deleteMany(\n filter,\n options || {},\n )\n }\n\n /**\n * Delete a document on MongoDB.\n */\n async deleteOne(\n collectionName: string,\n filter: Filter<Document>,\n options?: DeleteOptions,\n ): Promise<DeleteResult> {\n return this.getCollection(collectionName).deleteOne(\n filter,\n options || {},\n )\n }\n\n /**\n * The distinct command returns returns a list of distinct values for the given key across a collection.\n */\n async distinct(\n collectionName: string,\n key: any,\n filter: Filter<Document>,\n options?: CommandOperationOptions,\n ): Promise<any> {\n return this.getCollection(collectionName).distinct(\n key,\n filter,\n options || {},\n )\n }\n\n /**\n * Drops an index from this collection.\n */\n async dropCollectionIndex(\n collectionName: string,\n indexName: string,\n options?: CommandOperationOptions,\n ): Promise<Document> {\n return this.getCollection(collectionName).dropIndex(\n indexName,\n options || {},\n )\n }\n\n /**\n * Drops all indexes from the collection.\n */\n async dropCollectionIndexes(collectionName: string): Promise<Document> {\n return this.getCollection(collectionName).dropIndexes()\n }\n\n /**\n * Find a document and delete it in one atomic operation, requires a write lock for the duration of the operation.\n */\n async findOneAndDelete(\n collectionName: string,\n filter: Filter<Document>,\n options?: FindOneAndDeleteOptions,\n ): Promise<Document | null> {\n return this.getCollection(collectionName).findOneAndDelete(\n filter,\n options || {},\n )\n }\n\n /**\n * Find a document and replace it in one atomic operation, requires a write lock for the duration of the operation.\n */\n async findOneAndReplace(\n collectionName: string,\n filter: Filter<Document>,\n replacement: Document,\n options?: FindOneAndReplaceOptions,\n ): Promise<Document | null> {\n return this.getCollection(collectionName).findOneAndReplace(\n filter,\n replacement,\n options || {},\n )\n }\n\n /**\n * Find a document and update it in one atomic operation, requires a write lock for the duration of the operation.\n */\n async findOneAndUpdate(\n collectionName: string,\n filter: Filter<Document>,\n update: UpdateFilter<Document>,\n options?: FindOneAndUpdateOptions,\n ): Promise<Document | null> {\n return this.getCollection(collectionName).findOneAndUpdate(\n filter,\n update,\n options || {},\n )\n }\n\n /**\n * Retrieve all the indexes on the collection.\n */\n async collectionIndexes(collectionName: string): Promise<Document> {\n return this.getCollection(collectionName).indexes()\n }\n\n /**\n * Retrieve all the indexes on the collection.\n */\n async collectionIndexExists(\n collectionName: string,\n indexes: string | string[],\n ): Promise<boolean> {\n return this.getCollection(collectionName).indexExists(indexes)\n }\n\n /**\n * Retrieves this collections index info.\n */\n async collectionIndexInformation(\n collectionName: string,\n options?: IndexInformationOptions,\n ): Promise<any> {\n return this.getCollection(collectionName).indexInformation(\n options || {},\n )\n }\n\n /**\n * Initiate an In order bulk write operation, operations will be serially executed in the order they are added, creating a new operation for each switch in types.\n */\n initializeOrderedBulkOp(\n collectionName: string,\n options?: BulkWriteOptions,\n ): OrderedBulkOperation {\n return this.getCollection(collectionName).initializeOrderedBulkOp(\n options,\n )\n }\n\n /**\n * Initiate a Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.\n */\n initializeUnorderedBulkOp(\n collectionName: string,\n options?: BulkWriteOptions,\n ): UnorderedBulkOperation {\n return this.getCollection(collectionName).initializeUnorderedBulkOp(\n options,\n )\n }\n\n /**\n * Inserts an array of documents into MongoDB.\n */\n async insertMany(\n collectionName: string,\n docs: OptionalId<Document>[],\n options?: BulkWriteOptions,\n ): Promise<InsertManyResult> {\n return this.getCollection(collectionName).insertMany(\n docs,\n options || {},\n )\n }\n\n /**\n * Inserts a single document into MongoDB.\n */\n async insertOne(\n collectionName: string,\n doc: OptionalId<Document>,\n options?: InsertOneOptions,\n ): Promise<InsertOneResult> {\n return this.getCollection(collectionName).insertOne(doc, options || {})\n }\n\n /**\n * Returns if the collection is a capped collection.\n */\n async isCapped(collectionName: string): Promise<boolean> {\n return this.getCollection(collectionName).isCapped()\n }\n\n /**\n * Get the list of all indexes information for the collection.\n */\n listCollectionIndexes(\n collectionName: string,\n options?: ListIndexesOptions,\n ): ListIndexesCursor {\n return this.getCollection(collectionName).listIndexes(options)\n }\n\n /**\n * Reindex all indexes on the collection Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections.\n */\n async rename(\n collectionName: string,\n newName: string,\n options?: RenameOptions,\n ): Promise<Collection<Document>> {\n return this.getCollection(collectionName).rename(newName, options || {})\n }\n\n /**\n * Replace a document on MongoDB.\n */\n async replaceOne(\n collectionName: string,\n filter: Filter<Document>,\n replacement: Document,\n options?: ReplaceOptions,\n ): Promise<Document | UpdateResult> {\n return this.getCollection(collectionName).replaceOne(\n filter,\n replacement,\n options || {},\n )\n }\n\n /**\n * Get all the collection statistics.\n */\n async stats(\n collectionName: string,\n options?: CollStatsOptions,\n ): Promise<CollStats> {\n return this.getCollection(collectionName).stats(options || {})\n }\n\n /**\n * Watching new changes as stream.\n */\n watch(\n collectionName: string,\n pipeline?: Document[],\n options?: ChangeStreamOptions,\n ): ChangeStream {\n return this.getCollection(collectionName).watch(pipeline, options)\n }\n\n /**\n * Update multiple documents on MongoDB.\n */\n async updateMany(\n collectionName: string,\n filter: Filter<Document>,\n update: UpdateFilter<Document>,\n options?: UpdateOptions,\n ): Promise<Document | UpdateResult> {\n return this.getCollection(collectionName).updateMany(\n filter,\n update,\n options || {},\n )\n }\n\n /**\n * Update a single document on MongoDB.\n */\n async updateOne(\n collectionName: string,\n filter: Filter<Document>,\n update: UpdateFilter<Document>,\n options?: UpdateOptions,\n ): Promise<Document | UpdateResult> {\n return await this.getCollection(collectionName).updateOne(\n filter,\n update,\n options || {},\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods (from QueryRunner)\n // -------------------------------------------------------------------------\n\n /**\n * Removes all collections from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n async clearDatabase(): Promise<void> {\n await this.databaseConnection\n .db(this.connection.driver.database!)\n .dropDatabase()\n }\n\n /**\n * For MongoDB database we don't create connection, because its single connection already created by a driver.\n */\n async connect(): Promise<any> {}\n\n /**\n * For MongoDB database we don't release connection, because its single connection.\n */\n async release(): Promise<void> {\n // releasing connection are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(): Promise<void> {\n // transactions are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Commits transaction.\n */\n async commitTransaction(): Promise<void> {\n // transactions are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Rollbacks transaction.\n */\n async rollbackTransaction(): Promise<void> {\n // transactions are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Executes a given SQL query.\n */\n query(query: string, parameters?: any[]): Promise<any> {\n throw new TypeORMError(\n `Executing SQL query is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Returns raw data stream.\n */\n stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n throw new TypeORMError(\n `Stream is not supported by MongoDB driver. Use watch instead.`,\n )\n }\n\n /**\n * Insert a new row with given values into the given table.\n * Returns value of inserted object id.\n\n async insert(collectionName: string, keyValues: ObjectLiteral): Promise<any> { // todo: fix any\n const results = await this.databaseConnection\n .collection(collectionName)\n .insertOne(keyValues);\n const generatedMap = this.connection.getMetadata(collectionName).objectIdColumn!.createValueMap(results.insertedId);\n return {\n result: results,\n generatedMap: generatedMap\n };\n }*/\n\n /**\n * Updates rows that match given conditions in the given table.\n\n async update(collectionName: string, valuesMap: ObjectLiteral, conditions: ObjectLiteral): Promise<any> { // todo: fix any\n await this.databaseConnection\n .collection(collectionName)\n .updateOne(conditions, valuesMap);\n }*/\n\n /**\n * Deletes from the given table by a given conditions.\n\n async delete(collectionName: string, conditions: ObjectLiteral|ObjectLiteral[]|string, maybeParameters?: any[]): Promise<any> { // todo: fix any\n if (typeof conditions === \"string\")\n throw new TypeORMError(`String condition is not supported by MongoDB driver.`);\n\n await this.databaseConnection\n .collection(collectionName)\n .deleteOne(conditions);\n }*/\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads given table's data from the database.\n */\n async getTable(collectionName: string): Promise<Table | undefined> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n async getTables(collectionNames: string[]): Promise<Table[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads given views's data from the database.\n */\n async getView(collectionName: string): Promise<View | undefined> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads all views (with given names) from the database and creates a Table from them.\n */\n async getViews(collectionNames: string[]): Promise<View[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n getReplicationMode(): ReplicationMode {\n return \"master\"\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n throw new TypeORMError(\n `Check database queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<undefined> {\n throw new TypeORMError(\n `Check database queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n throw new TypeORMError(\n `Check schema queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<undefined> {\n throw new TypeORMError(\n `Check schema queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(collectionName: string): Promise<boolean> {\n throw new TypeORMError(\n `Check schema queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a database if it's not created.\n */\n async createDatabase(database: string): Promise<void> {\n throw new TypeORMError(\n `Database create queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n throw new TypeORMError(\n `Database drop queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(\n schemaPath: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema create queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops table schema.\n */\n async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\n throw new TypeORMError(\n `Schema drop queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new table from the given table and columns inside it.\n */\n async createTable(table: Table): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops the table.\n */\n async dropTable(tableName: Table | string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View | string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Renames the given table.\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableOrName: Table | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(tableOrName: Table | string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an unique constraint.\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an unique constraints.\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new check constraint.\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new check constraints.\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an index from the table.\n */\n async dropIndex(collectionName: string, indexName: string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops collection.\n */\n async clearTable(collectionName: string): Promise<void> {\n await this.databaseConnection\n .db(this.connection.driver.database!)\n .dropCollection(collectionName)\n }\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets collection from the database with a given name.\n */\n protected getCollection(collectionName: string): Collection<any> {\n return this.databaseConnection\n .db(this.connection.driver.database!)\n .collection(collectionName)\n }\n\n /**\n * Change table comment.\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void> {\n throw new TypeORMError(\n `mongodb driver does not support change table comment.`,\n )\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/driver/mongodb/MongoQueryRunner.ts"],"names":[],"mappings":"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","file":"MongoQueryRunner.js","sourcesContent":["import { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { View } from \"../../schema-builder/view/View\"\n// import {Connection} from \"../../connection/Connection\";\nimport { ReadStream } from \"../../platform/PlatformTools\"\nimport { MongoEntityManager } from \"../../entity-manager/MongoEntityManager\"\nimport { SqlInMemory } from \"../SqlInMemory\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { TypeORMError } from \"../../error\"\n\nimport {\n BulkWriteResult,\n AggregationCursor,\n MongoClient,\n Collection,\n FindCursor,\n Document,\n AggregateOptions,\n AnyBulkWriteOperation,\n BulkWriteOptions,\n Filter,\n CountOptions,\n CountDocumentsOptions,\n IndexSpecification,\n CreateIndexesOptions,\n IndexDescription,\n DeleteResult,\n DeleteOptions,\n CommandOperationOptions,\n FindOneAndDeleteOptions,\n FindOneAndReplaceOptions,\n UpdateFilter,\n FindOneAndUpdateOptions,\n RenameOptions,\n ReplaceOptions,\n UpdateResult,\n CollStats,\n CollStatsOptions,\n ChangeStreamOptions,\n ChangeStream,\n UpdateOptions,\n ListIndexesOptions,\n ListIndexesCursor,\n OptionalId,\n InsertOneOptions,\n InsertOneResult,\n InsertManyResult,\n UnorderedBulkOperation,\n OrderedBulkOperation,\n IndexInformationOptions,\n} from \"../../driver/mongodb/typings\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\n\n/**\n * Runs queries on a single MongoDB connection.\n */\nexport class MongoQueryRunner implements QueryRunner {\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by this query runner.\n */\n connection: DataSource\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster\n\n /**\n * Entity manager working only with current query runner.\n */\n manager: MongoEntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n * Always false for mongodb since mongodb has a single query executor instance.\n */\n isReleased = false\n\n /**\n * Indicates if transaction is active in this query executor.\n * Always false for mongodb since mongodb does not support transactions.\n */\n isTransactionActive = false\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {}\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[]\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[]\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n databaseConnection: MongoClient\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource, databaseConnection: MongoClient) {\n this.connection = connection\n this.databaseConnection = databaseConnection\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Creates a cursor for a query that can be used to iterate over results from MongoDB.\n */\n cursor(collectionName: string, filter: Filter<Document>): FindCursor<any> {\n return this.getCollection(collectionName).find(filter || {})\n }\n\n /**\n * Execute an aggregation framework pipeline against the collection.\n */\n aggregate(\n collectionName: string,\n pipeline: Document[],\n options?: AggregateOptions,\n ): AggregationCursor<any> {\n return this.getCollection(collectionName).aggregate(\n pipeline,\n options || {},\n )\n }\n\n /**\n * Perform a bulkWrite operation without a fluent API.\n */\n async bulkWrite(\n collectionName: string,\n operations: AnyBulkWriteOperation<Document>[],\n options?: BulkWriteOptions,\n ): Promise<BulkWriteResult> {\n return await this.getCollection(collectionName).bulkWrite(\n operations,\n options || {},\n )\n }\n\n /**\n * Count number of matching documents in the db to a query.\n */\n async count(\n collectionName: string,\n filter: Filter<Document>,\n options?: CountOptions,\n ): Promise<number> {\n return this.getCollection(collectionName).count(\n filter || {},\n options || {},\n )\n }\n\n /**\n * Count number of matching documents in the db to a query.\n */\n async countDocuments(\n collectionName: string,\n filter: Filter<Document>,\n options?: CountDocumentsOptions,\n ): Promise<any> {\n return this.getCollection(collectionName).countDocuments(\n filter || {},\n options || {},\n )\n }\n\n /**\n * Creates an index on the db and collection.\n */\n async createCollectionIndex(\n collectionName: string,\n indexSpec: IndexSpecification,\n options?: CreateIndexesOptions,\n ): Promise<string> {\n return this.getCollection(collectionName).createIndex(\n indexSpec,\n options || {},\n )\n }\n\n /**\n * Creates multiple indexes in the collection, this method is only supported for MongoDB 2.6 or higher.\n * Earlier version of MongoDB will throw a command not supported error. Index specifications are defined at http://docs.mongodb.org/manual/reference/command/createIndexes/.\n */\n async createCollectionIndexes(\n collectionName: string,\n indexSpecs: IndexDescription[],\n ): Promise<string[]> {\n return this.getCollection(collectionName).createIndexes(indexSpecs)\n }\n\n /**\n * Delete multiple documents on MongoDB.\n */\n async deleteMany(\n collectionName: string,\n filter: Filter<Document>,\n options: DeleteOptions,\n ): Promise<DeleteResult> {\n return this.getCollection(collectionName).deleteMany(\n filter,\n options || {},\n )\n }\n\n /**\n * Delete a document on MongoDB.\n */\n async deleteOne(\n collectionName: string,\n filter: Filter<Document>,\n options?: DeleteOptions,\n ): Promise<DeleteResult> {\n return this.getCollection(collectionName).deleteOne(\n filter,\n options || {},\n )\n }\n\n /**\n * The distinct command returns returns a list of distinct values for the given key across a collection.\n */\n async distinct(\n collectionName: string,\n key: any,\n filter: Filter<Document>,\n options?: CommandOperationOptions,\n ): Promise<any> {\n return this.getCollection(collectionName).distinct(\n key,\n filter,\n options || {},\n )\n }\n\n /**\n * Drops an index from this collection.\n */\n async dropCollectionIndex(\n collectionName: string,\n indexName: string,\n options?: CommandOperationOptions,\n ): Promise<Document> {\n return this.getCollection(collectionName).dropIndex(\n indexName,\n options || {},\n )\n }\n\n /**\n * Drops all indexes from the collection.\n */\n async dropCollectionIndexes(collectionName: string): Promise<Document> {\n return this.getCollection(collectionName).dropIndexes()\n }\n\n /**\n * Find a document and delete it in one atomic operation, requires a write lock for the duration of the operation.\n */\n async findOneAndDelete(\n collectionName: string,\n filter: Filter<Document>,\n options?: FindOneAndDeleteOptions,\n ): Promise<Document | null> {\n return this.getCollection(collectionName).findOneAndDelete(\n filter,\n options || {},\n )\n }\n\n /**\n * Find a document and replace it in one atomic operation, requires a write lock for the duration of the operation.\n */\n async findOneAndReplace(\n collectionName: string,\n filter: Filter<Document>,\n replacement: Document,\n options?: FindOneAndReplaceOptions,\n ): Promise<Document | null> {\n return this.getCollection(collectionName).findOneAndReplace(\n filter,\n replacement,\n options || {},\n )\n }\n\n /**\n * Find a document and update it in one atomic operation, requires a write lock for the duration of the operation.\n */\n async findOneAndUpdate(\n collectionName: string,\n filter: Filter<Document>,\n update: UpdateFilter<Document>,\n options?: FindOneAndUpdateOptions,\n ): Promise<Document | null> {\n return this.getCollection(collectionName).findOneAndUpdate(\n filter,\n update,\n options || {},\n )\n }\n\n /**\n * Retrieve all the indexes on the collection.\n */\n async collectionIndexes(collectionName: string): Promise<Document> {\n return this.getCollection(collectionName).indexes()\n }\n\n /**\n * Retrieve all the indexes on the collection.\n */\n async collectionIndexExists(\n collectionName: string,\n indexes: string | string[],\n ): Promise<boolean> {\n return this.getCollection(collectionName).indexExists(indexes)\n }\n\n /**\n * Retrieves this collections index info.\n */\n async collectionIndexInformation(\n collectionName: string,\n options?: IndexInformationOptions,\n ): Promise<any> {\n return this.getCollection(collectionName).indexInformation(\n options || {},\n )\n }\n\n /**\n * Initiate an In order bulk write operation, operations will be serially executed in the order they are added, creating a new operation for each switch in types.\n */\n initializeOrderedBulkOp(\n collectionName: string,\n options?: BulkWriteOptions,\n ): OrderedBulkOperation {\n return this.getCollection(collectionName).initializeOrderedBulkOp(\n options,\n )\n }\n\n /**\n * Initiate a Out of order batch write operation. All operations will be buffered into insert/update/remove commands executed out of order.\n */\n initializeUnorderedBulkOp(\n collectionName: string,\n options?: BulkWriteOptions,\n ): UnorderedBulkOperation {\n return this.getCollection(collectionName).initializeUnorderedBulkOp(\n options,\n )\n }\n\n /**\n * Inserts an array of documents into MongoDB.\n */\n async insertMany(\n collectionName: string,\n docs: OptionalId<Document>[],\n options?: BulkWriteOptions,\n ): Promise<InsertManyResult> {\n return this.getCollection(collectionName).insertMany(\n docs,\n options || {},\n )\n }\n\n /**\n * Inserts a single document into MongoDB.\n */\n async insertOne(\n collectionName: string,\n doc: OptionalId<Document>,\n options?: InsertOneOptions,\n ): Promise<InsertOneResult> {\n return this.getCollection(collectionName).insertOne(doc, options || {})\n }\n\n /**\n * Returns if the collection is a capped collection.\n */\n async isCapped(collectionName: string): Promise<boolean> {\n return this.getCollection(collectionName).isCapped()\n }\n\n /**\n * Get the list of all indexes information for the collection.\n */\n listCollectionIndexes(\n collectionName: string,\n options?: ListIndexesOptions,\n ): ListIndexesCursor {\n return this.getCollection(collectionName).listIndexes(options)\n }\n\n /**\n * Reindex all indexes on the collection Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections.\n */\n async rename(\n collectionName: string,\n newName: string,\n options?: RenameOptions,\n ): Promise<Collection<Document>> {\n return this.getCollection(collectionName).rename(newName, options || {})\n }\n\n /**\n * Replace a document on MongoDB.\n */\n async replaceOne(\n collectionName: string,\n filter: Filter<Document>,\n replacement: Document,\n options?: ReplaceOptions,\n ): Promise<Document | UpdateResult> {\n return this.getCollection(collectionName).replaceOne(\n filter,\n replacement,\n options || {},\n )\n }\n\n /**\n * Get all the collection statistics.\n */\n async stats(\n collectionName: string,\n options?: CollStatsOptions,\n ): Promise<CollStats> {\n return this.getCollection(collectionName).stats(options || {})\n }\n\n /**\n * Watching new changes as stream.\n */\n watch(\n collectionName: string,\n pipeline?: Document[],\n options?: ChangeStreamOptions,\n ): ChangeStream {\n return this.getCollection(collectionName).watch(pipeline, options)\n }\n\n /**\n * Update multiple documents on MongoDB.\n */\n async updateMany(\n collectionName: string,\n filter: Filter<Document>,\n update: UpdateFilter<Document>,\n options?: UpdateOptions,\n ): Promise<Document | UpdateResult> {\n return this.getCollection(collectionName).updateMany(\n filter,\n update,\n options || {},\n )\n }\n\n /**\n * Update a single document on MongoDB.\n */\n async updateOne(\n collectionName: string,\n filter: Filter<Document>,\n update: UpdateFilter<Document>,\n options?: UpdateOptions,\n ): Promise<Document | UpdateResult> {\n return await this.getCollection(collectionName).updateOne(\n filter,\n update,\n options || {},\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods (from QueryRunner)\n // -------------------------------------------------------------------------\n\n /**\n * Removes all collections from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n async clearDatabase(): Promise<void> {\n await this.databaseConnection\n .db(this.connection.driver.database!)\n .dropDatabase()\n }\n\n /**\n * For MongoDB database we don't create connection, because its single connection already created by a driver.\n */\n async connect(): Promise<any> {}\n\n /**\n * For MongoDB database we don't release connection, because its single connection.\n */\n async release(): Promise<void> {\n // releasing connection are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(): Promise<void> {\n // transactions are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Commits transaction.\n */\n async commitTransaction(): Promise<void> {\n // transactions are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Rollbacks transaction.\n */\n async rollbackTransaction(): Promise<void> {\n // transactions are not supported by mongodb driver, so simply don't do anything here\n }\n\n /**\n * Executes a given SQL query.\n */\n query(query: string, parameters?: any[]): Promise<any> {\n throw new TypeORMError(\n `Executing SQL query is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Unsupported - Executing SQL query is not supported by MongoDB driver.\n */\n async sql(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<any> {\n throw new TypeORMError(\n `Executing SQL query is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Returns raw data stream.\n */\n stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n throw new TypeORMError(\n `Stream is not supported by MongoDB driver. Use watch instead.`,\n )\n }\n\n /**\n * Insert a new row with given values into the given table.\n * Returns value of inserted object id.\n\n async insert(collectionName: string, keyValues: ObjectLiteral): Promise<any> { // todo: fix any\n const results = await this.databaseConnection\n .collection(collectionName)\n .insertOne(keyValues);\n const generatedMap = this.connection.getMetadata(collectionName).objectIdColumn!.createValueMap(results.insertedId);\n return {\n result: results,\n generatedMap: generatedMap\n };\n }*/\n\n /**\n * Updates rows that match given conditions in the given table.\n\n async update(collectionName: string, valuesMap: ObjectLiteral, conditions: ObjectLiteral): Promise<any> { // todo: fix any\n await this.databaseConnection\n .collection(collectionName)\n .updateOne(conditions, valuesMap);\n }*/\n\n /**\n * Deletes from the given table by a given conditions.\n\n async delete(collectionName: string, conditions: ObjectLiteral|ObjectLiteral[]|string, maybeParameters?: any[]): Promise<any> { // todo: fix any\n if (typeof conditions === \"string\")\n throw new TypeORMError(`String condition is not supported by MongoDB driver.`);\n\n await this.databaseConnection\n .collection(collectionName)\n .deleteOne(conditions);\n }*/\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads given table's data from the database.\n */\n async getTable(collectionName: string): Promise<Table | undefined> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n async getTables(collectionNames: string[]): Promise<Table[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads given views's data from the database.\n */\n async getView(collectionName: string): Promise<View | undefined> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads all views (with given names) from the database and creates a Table from them.\n */\n async getViews(collectionNames: string[]): Promise<View[]> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n getReplicationMode(): ReplicationMode {\n return \"master\"\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n throw new TypeORMError(\n `Check database queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<undefined> {\n throw new TypeORMError(\n `Check database queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n throw new TypeORMError(\n `Check schema queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<undefined> {\n throw new TypeORMError(\n `Check schema queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(collectionName: string): Promise<boolean> {\n throw new TypeORMError(\n `Check schema queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a database if it's not created.\n */\n async createDatabase(database: string): Promise<void> {\n throw new TypeORMError(\n `Database create queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n throw new TypeORMError(\n `Database drop queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(\n schemaPath: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema create queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops table schema.\n */\n async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\n throw new TypeORMError(\n `Schema drop queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new table from the given table and columns inside it.\n */\n async createTable(table: Table): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops the table.\n */\n async dropTable(tableName: Table | string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View | string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Renames the given table.\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableOrName: Table | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(tableOrName: Table | string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an unique constraint.\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an unique constraints.\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new check constraint.\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new check constraints.\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an index from the table.\n */\n async dropIndex(collectionName: string, indexName: string): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n throw new TypeORMError(\n `Schema update queries are not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Drops collection.\n */\n async clearTable(collectionName: string): Promise<void> {\n await this.databaseConnection\n .db(this.connection.driver.database!)\n .dropCollection(collectionName)\n }\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n throw new TypeORMError(\n `This operation is not supported by MongoDB driver.`,\n )\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets collection from the database with a given name.\n */\n protected getCollection(collectionName: string): Collection<any> {\n return this.databaseConnection\n .db(this.connection.driver.database!)\n .collection(collectionName)\n }\n\n /**\n * Change table comment.\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void> {\n throw new TypeORMError(\n `mongodb driver does not support change table comment.`,\n )\n }\n}\n"],"sourceRoot":"../.."}
@@ -67,6 +67,14 @@ export declare class EntityManager {
67
67
  * @see [Official docs](https://typeorm.io/entity-manager-api) for examples.
68
68
  */
69
69
  query<T = any>(query: string, parameters?: any[]): Promise<T>;
70
+ /**
71
+ * Tagged template function that executes raw SQL query and returns raw database results.
72
+ * Template expressions are automatically transformed into database parameters.
73
+ * Raw query execution is supported only by relational databases (MongoDB is not supported).
74
+ * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.
75
+ * Example: entityManager.sql`SELECT * FROM table_name WHERE id = ${id}`
76
+ */
77
+ sql<T = any>(strings: TemplateStringsArray, ...values: unknown[]): Promise<T>;
70
78
  /**
71
79
  * Creates a new query builder that can be used to build a SQL query.
72
80
  */
@@ -13,6 +13,7 @@ import { EntityPersistExecutor } from "../persistence/EntityPersistExecutor";
13
13
  import { ObjectUtils } from "../util/ObjectUtils";
14
14
  import { getMetadataArgsStorage } from "../globals";
15
15
  import { InstanceChecker } from "../util/InstanceChecker";
16
+ import { buildSqlTag } from "../util/SqlTagUtils";
16
17
  import { OrmUtils } from "../util/OrmUtils";
17
18
  /**
18
19
  * Entity manager supposed to work with any entity, automatically find its repository and call its methods,
@@ -94,6 +95,21 @@ export class EntityManager {
94
95
  async query(query, parameters) {
95
96
  return this.connection.query(query, parameters, this.queryRunner);
96
97
  }
98
+ /**
99
+ * Tagged template function that executes raw SQL query and returns raw database results.
100
+ * Template expressions are automatically transformed into database parameters.
101
+ * Raw query execution is supported only by relational databases (MongoDB is not supported).
102
+ * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.
103
+ * Example: entityManager.sql`SELECT * FROM table_name WHERE id = ${id}`
104
+ */
105
+ async sql(strings, ...values) {
106
+ const { query, parameters } = buildSqlTag({
107
+ driver: this.connection.driver,
108
+ strings: strings,
109
+ expressions: values,
110
+ });
111
+ return await this.query(query, parameters);
112
+ }
97
113
  /**
98
114
  * Creates a new query builder that can be used to build a SQL query.
99
115
  */