typeorm 0.2.39-dev.ef33cf4 → 0.2.40-dev.ae858ad

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 (84) hide show
  1. package/README.md +0 -3
  2. package/browser/driver/cockroachdb/CockroachDriver.js +23 -14
  3. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  4. package/browser/driver/cockroachdb/CockroachQueryRunner.js +63 -69
  5. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  6. package/browser/driver/cordova/CordovaDriver.d.ts +1 -1
  7. package/browser/driver/cordova/CordovaDriver.js +25 -18
  8. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  9. package/browser/driver/cordova/CordovaQueryRunner.js +50 -43
  10. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  11. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  12. package/browser/driver/postgres/PostgresDriver.js +31 -40
  13. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  14. package/browser/driver/postgres/PostgresQueryRunner.js +7 -15
  15. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  16. package/browser/driver/sap/SapQueryRunner.js +10 -28
  17. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  18. package/browser/driver/sqljs/SqljsDriver.js +5 -22
  19. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  20. package/browser/driver/sqljs/SqljsQueryRunner.js +9 -10
  21. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  22. package/browser/find-options/FindOptionsUtils.d.ts +2 -0
  23. package/browser/find-options/FindOptionsUtils.js +19 -1
  24. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  25. package/browser/migration/MigrationExecutor.d.ts +1 -1
  26. package/browser/migration/MigrationExecutor.js +2 -14
  27. package/browser/migration/MigrationExecutor.js.map +1 -1
  28. package/browser/persistence/SubjectExecutor.js +3 -3
  29. package/browser/persistence/SubjectExecutor.js.map +1 -1
  30. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  31. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  32. package/browser/query-builder/QueryExpressionMap.d.ts +6 -0
  33. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  34. package/browser/query-builder/SelectQueryBuilder.d.ts +7 -1
  35. package/browser/query-builder/SelectQueryBuilder.js +37 -5
  36. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  37. package/browser/query-runner/BaseQueryRunner.js +3 -2
  38. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  39. package/browser/repository/TreeRepository.d.ts +3 -3
  40. package/browser/repository/TreeRepository.js +28 -39
  41. package/browser/repository/TreeRepository.js.map +1 -1
  42. package/commands/InitCommand.js +2 -1
  43. package/commands/InitCommand.js.map +1 -1
  44. package/driver/cockroachdb/CockroachDriver.js +23 -14
  45. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  46. package/driver/cockroachdb/CockroachQueryRunner.js +63 -69
  47. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  48. package/driver/cordova/CordovaDriver.d.ts +1 -1
  49. package/driver/cordova/CordovaDriver.js +25 -18
  50. package/driver/cordova/CordovaDriver.js.map +1 -1
  51. package/driver/cordova/CordovaQueryRunner.js +50 -43
  52. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  53. package/driver/postgres/PostgresDriver.d.ts +2 -2
  54. package/driver/postgres/PostgresDriver.js +31 -40
  55. package/driver/postgres/PostgresDriver.js.map +1 -1
  56. package/driver/postgres/PostgresQueryRunner.js +7 -15
  57. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  58. package/driver/sap/SapQueryRunner.js +10 -28
  59. package/driver/sap/SapQueryRunner.js.map +1 -1
  60. package/driver/sqljs/SqljsDriver.js +5 -22
  61. package/driver/sqljs/SqljsDriver.js.map +1 -1
  62. package/driver/sqljs/SqljsQueryRunner.js +9 -10
  63. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  64. package/find-options/FindOptionsUtils.d.ts +2 -0
  65. package/find-options/FindOptionsUtils.js +19 -1
  66. package/find-options/FindOptionsUtils.js.map +1 -1
  67. package/migration/MigrationExecutor.d.ts +1 -1
  68. package/migration/MigrationExecutor.js +2 -14
  69. package/migration/MigrationExecutor.js.map +1 -1
  70. package/package.json +1 -1
  71. package/persistence/SubjectExecutor.js +3 -3
  72. package/persistence/SubjectExecutor.js.map +1 -1
  73. package/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  74. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  75. package/query-builder/QueryExpressionMap.d.ts +6 -0
  76. package/query-builder/QueryExpressionMap.js.map +1 -1
  77. package/query-builder/SelectQueryBuilder.d.ts +7 -1
  78. package/query-builder/SelectQueryBuilder.js +37 -5
  79. package/query-builder/SelectQueryBuilder.js.map +1 -1
  80. package/query-runner/BaseQueryRunner.js +3 -2
  81. package/query-runner/BaseQueryRunner.js.map +1 -1
  82. package/repository/TreeRepository.d.ts +3 -3
  83. package/repository/TreeRepository.js +27 -38
  84. package/repository/TreeRepository.js.map +1 -1
@@ -17,7 +17,7 @@ export declare class CordovaDriver extends AbstractSqliteDriver {
17
17
  /**
18
18
  * Creates connection with the database.
19
19
  */
20
- protected createDatabaseConnection(): Promise<void>;
20
+ protected createDatabaseConnection(): Promise<any>;
21
21
  /**
22
22
  * If driver dependency is not given explicitly, then try to load it via "require".
23
23
  */
@@ -35,8 +35,8 @@ var CordovaDriver = /** @class */ (function (_super) {
35
35
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
36
36
  var _this = this;
37
37
  return (0, tslib_1.__generator)(this, function (_a) {
38
+ this.queryRunner = undefined;
38
39
  return [2 /*return*/, new Promise(function (ok, fail) {
39
- _this.queryRunner = undefined;
40
40
  _this.databaseConnection.close(ok, fail);
41
41
  })];
42
42
  });
@@ -57,23 +57,30 @@ var CordovaDriver = /** @class */ (function (_super) {
57
57
  * Creates connection with the database.
58
58
  */
59
59
  CordovaDriver.prototype.createDatabaseConnection = function () {
60
- var _this = this;
61
- return new Promise(function (ok, fail) {
62
- var options = Object.assign({}, {
63
- name: _this.options.database,
64
- location: _this.options.location,
65
- }, _this.options.extra || {});
66
- _this.sqlite.openDatabase(options, function (db) {
67
- var databaseConnection = db;
68
- // we need to enable foreign keys in sqlite to make sure all foreign key related features
69
- // working properly. this also makes onDelete to work with sqlite.
70
- databaseConnection.executeSql("PRAGMA foreign_keys = ON;", [], function (result) {
71
- ok(databaseConnection);
72
- }, function (error) {
73
- fail(error);
74
- });
75
- }, function (error) {
76
- fail(error);
60
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
61
+ var options, connection;
62
+ var _this = this;
63
+ return (0, tslib_1.__generator)(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ options = Object.assign({}, {
67
+ name: this.options.database,
68
+ location: this.options.location,
69
+ }, this.options.extra || {});
70
+ return [4 /*yield*/, new Promise(function (resolve) {
71
+ _this.sqlite.openDatabase(options, function (db) { return resolve(db); });
72
+ })];
73
+ case 1:
74
+ connection = _a.sent();
75
+ return [4 /*yield*/, new Promise(function (ok, fail) {
76
+ // we need to enable foreign keys in sqlite to make sure all foreign key related features
77
+ // working properly. this also makes onDelete to work with sqlite.
78
+ connection.executeSql("PRAGMA foreign_keys = ON;", [], function () { return ok(); }, function (err) { return fail(err); });
79
+ })];
80
+ case 2:
81
+ _a.sent();
82
+ return [2 /*return*/, connection];
83
+ }
77
84
  });
78
85
  });
79
86
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/cordova/CordovaDriver.ts"],"names":[],"mappings":";;;;AAAA,gFAA6E;AAE7E,2DAAwD;AAGxD,+EAA4E;AAC5E,6FAA0F;AAU1F;IAAmC,8CAAoB;IAGnD,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,uBAAY,UAAsB;QAAlC,YACI,kBAAM,UAAU,CAAC,SAepB;QAbG,gCAAgC;QAChC,iEAAiE;QACjE,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEtC,kDAAkD;QAClD,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,QAAQ;YACtB,MAAM,IAAI,iDAAuB,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,QAAQ;YACtB,MAAM,IAAI,iDAAuB,CAAC,UAAU,CAAC,CAAC;QAElD,sBAAsB;QACtB,KAAI,CAAC,gBAAgB,EAAE,CAAC;;IAC5B,CAAC;IAGD,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACG,kCAAU,GAAhB;;;;gBACI,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;wBAC9B,KAAI,CAAC,WAAW,GAAG,SAAS,CAAC;wBAC7B,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC5C,CAAC,CAAC,EAAC;;;KACN;IAED;;OAEG;IACH,yCAAiB,GAAjB,UAAkB,IAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,gDAAwB,GAAlC;QAAA,iBAqBC;QApBG,OAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;YAC9B,IAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBAC9B,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,KAAI,CAAC,OAAO,CAAC,QAAQ;aAClC,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAE7B,KAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,UAAC,EAAO;gBACtC,IAAM,kBAAkB,GAAG,EAAE,CAAC;gBAE9B,yFAAyF;gBACzF,kEAAkE;gBAClE,kBAAkB,CAAC,UAAU,CAAC,2BAA2B,EAAE,EAAE,EAAE,UAAC,MAAW;oBACvE,EAAE,CAAC,kBAAkB,CAAC,CAAC;gBAC3B,CAAC,EAAE,UAAC,KAAU;oBACV,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,UAAC,KAAU;gBACV,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,wCAAgB,GAA1B;QACI,IAAI;YACA,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;YAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SAExB;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,+DAA8B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;SACxF;IACL,CAAC;IACL,oBAAC;AAAD,CA5FA,AA4FC,CA5FkC,2CAAoB,GA4FtD;AA5FY,sCAAa","file":"CordovaDriver.js","sourcesContent":["import {AbstractSqliteDriver} from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport {CordovaConnectionOptions} from \"./CordovaConnectionOptions\";\nimport {CordovaQueryRunner} from \"./CordovaQueryRunner\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {Connection} from \"../../connection/Connection\";\nimport {DriverOptionNotSetError} from \"../../error/DriverOptionNotSetError\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\n\n// needed for typescript compiler\ninterface Window {\n sqlitePlugin: any;\n}\n\ndeclare let window: Window;\n\nexport class CordovaDriver extends AbstractSqliteDriver {\n options: CordovaConnectionOptions;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n super(connection);\n\n // this.connection = connection;\n // this.options = connection.options as CordovaConnectionOptions;\n this.database = this.options.database;\n\n // validate options to make sure everything is set\n if (!this.options.database)\n throw new DriverOptionNotSetError(\"database\");\n\n if (!this.options.location)\n throw new DriverOptionNotSetError(\"location\");\n\n // load sqlite package\n this.loadDependencies();\n }\n\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.queryRunner = undefined;\n this.databaseConnection.close(ok, fail);\n });\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner)\n this.queryRunner = new CordovaQueryRunner(this);\n\n return this.queryRunner;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected createDatabaseConnection() {\n return new Promise<void>((ok, fail) => {\n const options = Object.assign({}, {\n name: this.options.database,\n location: this.options.location,\n }, this.options.extra || {});\n\n this.sqlite.openDatabase(options, (db: any) => {\n const databaseConnection = db;\n\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n databaseConnection.executeSql(`PRAGMA foreign_keys = ON;`, [], (result: any) => {\n ok(databaseConnection);\n }, (error: any) => {\n fail(error);\n });\n }, (error: any) => {\n fail(error);\n });\n });\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n const sqlite = this.options.driver || window.sqlitePlugin;\n this.sqlite = sqlite;\n\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"Cordova-SQLite\", \"cordova-sqlite-storage\");\n }\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/cordova/CordovaDriver.ts"],"names":[],"mappings":";;;;AAAA,gFAA6E;AAE7E,2DAAwD;AAGxD,+EAA4E;AAC5E,6FAA0F;AAU1F;IAAmC,8CAAoB;IAGnD,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,uBAAY,UAAsB;QAAlC,YACI,kBAAM,UAAU,CAAC,SAepB;QAbG,gCAAgC;QAChC,iEAAiE;QACjE,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEtC,kDAAkD;QAClD,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,QAAQ;YACtB,MAAM,IAAI,iDAAuB,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,QAAQ;YACtB,MAAM,IAAI,iDAAuB,CAAC,UAAU,CAAC,CAAC;QAElD,sBAAsB;QACtB,KAAI,CAAC,gBAAgB,EAAE,CAAC;;IAC5B,CAAC;IAGD,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACG,kCAAU,GAAhB;;;;gBACI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAE7B,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;wBAC9B,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC5C,CAAC,CAAC,EAAC;;;KACN;IAED;;OAEG;IACH,yCAAiB,GAAjB,UAAkB,IAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACa,gDAAwB,GAAxC;;;;;;;wBACU,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;4BAC9B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;4BAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;yBAClC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;wBAEV,qBAAM,IAAI,OAAO,CAAM,UAAC,OAAO;gCAC9C,KAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,UAAC,EAAO,IAAK,OAAA,OAAO,CAAC,EAAE,CAAC,EAAX,CAAW,CAAC,CAAA;4BAC/D,CAAC,CAAC,EAAA;;wBAFI,UAAU,GAAG,SAEjB;wBAEF,qBAAM,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;gCAC7B,yFAAyF;gCACzF,kEAAkE;gCAClE,UAAU,CAAC,UAAU,CACjB,2BAA2B,EAC3B,EAAE,EACF,cAAM,OAAA,EAAE,EAAE,EAAJ,CAAI,EACV,UAAC,GAAQ,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,EAAT,CAAS,CAC1B,CAAC;4BACN,CAAC,CAAC,EAAA;;wBATF,SASE,CAAA;wBAEF,sBAAO,UAAU,EAAC;;;;KACrB;IAED;;OAEG;IACO,wCAAgB,GAA1B;QACI,IAAI;YACA,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;YAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SAExB;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,+DAA8B,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;SACxF;IACL,CAAC;IACL,oBAAC;AAAD,CA9FA,AA8FC,CA9FkC,2CAAoB,GA8FtD;AA9FY,sCAAa","file":"CordovaDriver.js","sourcesContent":["import {AbstractSqliteDriver} from \"../sqlite-abstract/AbstractSqliteDriver\";\nimport {CordovaConnectionOptions} from \"./CordovaConnectionOptions\";\nimport {CordovaQueryRunner} from \"./CordovaQueryRunner\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {Connection} from \"../../connection/Connection\";\nimport {DriverOptionNotSetError} from \"../../error/DriverOptionNotSetError\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\n\n// needed for typescript compiler\ninterface Window {\n sqlitePlugin: any;\n}\n\ndeclare let window: Window;\n\nexport class CordovaDriver extends AbstractSqliteDriver {\n options: CordovaConnectionOptions;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n super(connection);\n\n // this.connection = connection;\n // this.options = connection.options as CordovaConnectionOptions;\n this.database = this.options.database;\n\n // validate options to make sure everything is set\n if (!this.options.database)\n throw new DriverOptionNotSetError(\"database\");\n\n if (!this.options.location)\n throw new DriverOptionNotSetError(\"location\");\n\n // load sqlite package\n this.loadDependencies();\n }\n\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n this.queryRunner = undefined;\n\n return new Promise<void>((ok, fail) => {\n this.databaseConnection.close(ok, fail);\n });\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner)\n this.queryRunner = new CordovaQueryRunner(this);\n\n return this.queryRunner;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected async createDatabaseConnection() {\n const options = Object.assign({}, {\n name: this.options.database,\n location: this.options.location,\n }, this.options.extra || {});\n\n const connection = await new Promise<any>((resolve) => {\n this.sqlite.openDatabase(options, (db: any) => resolve(db))\n })\n\n await new Promise<void>((ok, fail) => {\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n connection.executeSql(\n `PRAGMA foreign_keys = ON;`,\n [],\n () => ok(),\n (err: any) => fail(err)\n );\n })\n\n return connection;\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n const sqlite = this.options.driver || window.sqlitePlugin;\n this.sqlite = sqlite;\n\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"Cordova-SQLite\", \"cordova-sqlite-storage\");\n }\n }\n}\n"],"sourceRoot":"../.."}
@@ -29,53 +29,60 @@ var CordovaQueryRunner = /** @class */ (function (_super) {
29
29
  CordovaQueryRunner.prototype.query = function (query, parameters, useStructuredResult) {
30
30
  if (useStructuredResult === void 0) { useStructuredResult = false; }
31
31
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
32
+ var databaseConnection, queryStartTime, raw, maxQueryExecutionTime, queryEndTime, queryExecutionTime, result, resultSet, i, err_1;
32
33
  var _this = this;
33
34
  return (0, tslib_1.__generator)(this, function (_a) {
34
- if (this.isReleased)
35
- throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
36
- return [2 /*return*/, new Promise(function (ok, fail) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
37
- var databaseConnection, queryStartTime;
38
- var _this = this;
39
- return (0, tslib_1.__generator)(this, function (_a) {
40
- switch (_a.label) {
41
- case 0: return [4 /*yield*/, this.connect()];
42
- case 1:
43
- databaseConnection = _a.sent();
44
- this.driver.connection.logger.logQuery(query, parameters, this);
45
- queryStartTime = +new Date();
46
- databaseConnection.executeSql(query, parameters, function (raw) {
47
- // log slow queries if maxQueryExecution time is set
48
- var maxQueryExecutionTime = _this.driver.options.maxQueryExecutionTime;
49
- var queryEndTime = +new Date();
50
- var queryExecutionTime = queryEndTime - queryStartTime;
51
- if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)
52
- _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);
53
- var result = new QueryResult_1.QueryResult();
54
- if (query.substr(0, 11) === "INSERT INTO") {
55
- result.raw = raw.insertId;
56
- }
57
- else {
58
- var resultSet = [];
59
- for (var i = 0; i < raw.rows.length; i++) {
60
- resultSet.push(raw.rows.item(i));
61
- }
62
- result.records = resultSet;
63
- result.raw = resultSet;
64
- }
65
- if (useStructuredResult) {
66
- ok(result);
67
- }
68
- else {
69
- ok(result.raw);
70
- }
71
- }, function (err) {
72
- _this.driver.connection.logger.logQueryError(err, query, parameters, _this);
73
- fail(new QueryFailedError_1.QueryFailedError(query, parameters, err));
74
- });
35
+ switch (_a.label) {
36
+ case 0:
37
+ if (this.isReleased)
38
+ throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
39
+ return [4 /*yield*/, this.connect()];
40
+ case 1:
41
+ databaseConnection = _a.sent();
42
+ this.driver.connection.logger.logQuery(query, parameters, this);
43
+ queryStartTime = +new Date();
44
+ _a.label = 2;
45
+ case 2:
46
+ _a.trys.push([2, 4, , 5]);
47
+ return [4 /*yield*/, new Promise(function (ok, fail) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
48
+ return (0, tslib_1.__generator)(this, function (_a) {
49
+ databaseConnection.executeSql(query, parameters, function (raw) { return ok(raw); }, function (err) { return fail(err); });
75
50
  return [2 /*return*/];
51
+ });
52
+ }); })];
53
+ case 3:
54
+ raw = _a.sent();
55
+ maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
56
+ queryEndTime = +new Date();
57
+ queryExecutionTime = queryEndTime - queryStartTime;
58
+ if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) {
59
+ this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
60
+ }
61
+ result = new QueryResult_1.QueryResult();
62
+ if (query.substr(0, 11) === "INSERT INTO") {
63
+ result.raw = raw.insertId;
64
+ }
65
+ else {
66
+ resultSet = [];
67
+ for (i = 0; i < raw.rows.length; i++) {
68
+ resultSet.push(raw.rows.item(i));
76
69
  }
77
- });
78
- }); })];
70
+ result.records = resultSet;
71
+ result.raw = resultSet;
72
+ }
73
+ if (useStructuredResult) {
74
+ return [2 /*return*/, result];
75
+ }
76
+ else {
77
+ return [2 /*return*/, result.raw];
78
+ }
79
+ return [3 /*break*/, 5];
80
+ case 4:
81
+ err_1 = _a.sent();
82
+ this.driver.connection.logger.logQueryError(err_1, query, parameters, this);
83
+ throw new QueryFailedError_1.QueryFailedError(query, parameters, err_1);
84
+ case 5: return [2 /*return*/];
85
+ }
79
86
  });
80
87
  });
81
88
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/cordova/CordovaQueryRunner.ts"],"names":[],"mappings":"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","file":"CordovaQueryRunner.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunnerAlreadyReleasedError} from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport {QueryFailedError} from \"../../error/QueryFailedError\";\nimport {AbstractSqliteQueryRunner} from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport {CordovaDriver} from \"./CordovaDriver\";\nimport {Broadcaster} from \"../../subscriber/Broadcaster\";\nimport { TypeORMError } from \"../../error\";\nimport { QueryResult } from \"../../query-runner/QueryResult\";\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class CordovaQueryRunner extends AbstractSqliteQueryRunner {\n\n /**\n * Database driver used by connection.\n */\n driver: CordovaDriver;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: CordovaDriver) {\n super();\n this.driver = driver;\n this.connection = driver.connection;\n this.broadcaster = new Broadcaster(this);\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(query: string, parameters?: any[], useStructuredResult = false): Promise<any> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n return new Promise(async (ok, fail) => {\n const databaseConnection = await this.connect();\n this.driver.connection.logger.logQuery(query, parameters, this);\n const queryStartTime = +new Date();\n databaseConnection.executeSql(query, parameters, (raw: any) => {\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;\n const queryEndTime = +new Date();\n const queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n\n const result = new QueryResult();\n\n if (query.substr(0, 11) === \"INSERT INTO\") {\n result.raw = raw.insertId;\n } else {\n let resultSet = [];\n for (let i = 0; i < raw.rows.length; i++) {\n resultSet.push(raw.rows.item(i));\n }\n\n result.records = resultSet;\n result.raw = resultSet;\n }\n\n if (useStructuredResult) {\n ok(result);\n } else {\n ok(result.raw);\n }\n }, (err: any) => {\n this.driver.connection.logger.logQueryError(err, query, parameters, this);\n fail(new QueryFailedError(query, parameters, err));\n });\n });\n }\n\n /**\n * Insert a new row with given values into the given table.\n * Returns value of the generated column if given and generate column exist in the table.\n // todo: implement new syntax\n async insert(tableName: string, keyValues: ObjectLiteral): Promise<InsertResult> {\n const keys = Object.keys(keyValues);\n const columns = keys.map(key => `\"${key}\"`).join(\", \");\n const values = keys.map(key => \"?\").join(\",\");\n const generatedColumns = this.connection.hasMetadata(tableName) ? this.connection.getMetadata(tableName).generatedColumns : [];\n const sql = columns.length > 0 ? (`INSERT INTO \"${tableName}\"(${columns}) VALUES (${values})`) : `INSERT INTO \"${tableName}\" DEFAULT VALUES`;\n const parameters = keys.map(key => keyValues[key]);\n\n return new Promise<InsertResult>(async (ok, fail) => {\n this.driver.connection.logger.logQuery(sql, parameters, this);\n const __this = this;\n const databaseConnection = await this.connect();\n databaseConnection.executeSql(sql, parameters, (resultSet: any) => {\n const generatedMap = generatedColumns.reduce((map, generatedColumn) => {\n const value = generatedColumn.isPrimary && generatedColumn.generationStrategy === \"increment\" && resultSet.insertId ? resultSet.insertId : keyValues[generatedColumn.databaseName];\n if (!value) return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n ok({\n result: undefined,\n generatedMap: Object.keys(generatedMap).length > 0 ? generatedMap : undefined\n });\n }, (err: any) => {\n __this.driver.connection.logger.logQueryError(err, sql, parameters, this);\n fail(err);\n });\n });\n }*/\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async startTransaction(): Promise<void> {\n throw new TypeORMError('Transactions are not supported by the Cordova driver')\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async commitTransaction(): Promise<void> {\n throw new TypeORMError('Transactions are not supported by the Cordova driver')\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async rollbackTransaction(): Promise<void> {\n throw new TypeORMError('Transactions are not supported by the Cordova driver')\n }\n\n /**\n * Removes all tables 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.query(`PRAGMA foreign_keys = OFF;`);\n try {\n const selectViewDropsQuery = `SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'`;\n const dropViewQueries: ObjectLiteral[] = await this.query(selectViewDropsQuery);\n\n const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'`;\n const dropTableQueries: ObjectLiteral[] = await this.query(selectTableDropsQuery);\n\n await Promise.all(dropViewQueries.map(q => this.query(q[\"query\"])));\n await Promise.all(dropTableQueries.map(q => this.query(q[\"query\"])));\n } finally {\n await this.query(`PRAGMA foreign_keys = ON;`);\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n protected parametrize(objectLiteral: ObjectLiteral, startIndex: number = 0): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\");\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/cordova/CordovaQueryRunner.ts"],"names":[],"mappings":"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","file":"CordovaQueryRunner.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunnerAlreadyReleasedError} from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport {QueryFailedError} from \"../../error/QueryFailedError\";\nimport {AbstractSqliteQueryRunner} from \"../sqlite-abstract/AbstractSqliteQueryRunner\";\nimport {CordovaDriver} from \"./CordovaDriver\";\nimport {Broadcaster} from \"../../subscriber/Broadcaster\";\nimport { TypeORMError } from \"../../error\";\nimport { QueryResult } from \"../../query-runner/QueryResult\";\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class CordovaQueryRunner extends AbstractSqliteQueryRunner {\n\n /**\n * Database driver used by connection.\n */\n driver: CordovaDriver;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: CordovaDriver) {\n super();\n this.driver = driver;\n this.connection = driver.connection;\n this.broadcaster = new Broadcaster(this);\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(query: string, parameters?: any[], useStructuredResult = false): Promise<any> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n const databaseConnection = await this.connect();\n this.driver.connection.logger.logQuery(query, parameters, this);\n const queryStartTime = +new Date();\n\n try {\n const raw = await new Promise<any>(async (ok, fail) => {\n databaseConnection.executeSql(query, parameters,\n (raw: any) => ok(raw),\n (err: any) => fail(err)\n )\n });\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;\n const queryEndTime = +new Date();\n const queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) {\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n }\n\n const result = new QueryResult();\n\n if (query.substr(0, 11) === \"INSERT INTO\") {\n result.raw = raw.insertId;\n } else {\n let resultSet = [];\n for (let i = 0; i < raw.rows.length; i++) {\n resultSet.push(raw.rows.item(i));\n }\n\n result.records = resultSet;\n result.raw = resultSet;\n }\n\n if (useStructuredResult) {\n return result;\n } else {\n return result.raw;\n }\n\n } catch (err) {\n this.driver.connection.logger.logQueryError(err, query, parameters, this);\n throw new QueryFailedError(query, parameters, err);\n }\n }\n\n /**\n * Insert a new row with given values into the given table.\n * Returns value of the generated column if given and generate column exist in the table.\n // todo: implement new syntax\n async insert(tableName: string, keyValues: ObjectLiteral): Promise<InsertResult> {\n const keys = Object.keys(keyValues);\n const columns = keys.map(key => `\"${key}\"`).join(\", \");\n const values = keys.map(key => \"?\").join(\",\");\n const generatedColumns = this.connection.hasMetadata(tableName) ? this.connection.getMetadata(tableName).generatedColumns : [];\n const sql = columns.length > 0 ? (`INSERT INTO \"${tableName}\"(${columns}) VALUES (${values})`) : `INSERT INTO \"${tableName}\" DEFAULT VALUES`;\n const parameters = keys.map(key => keyValues[key]);\n\n return new Promise<InsertResult>(async (ok, fail) => {\n this.driver.connection.logger.logQuery(sql, parameters, this);\n const __this = this;\n const databaseConnection = await this.connect();\n databaseConnection.executeSql(sql, parameters, (resultSet: any) => {\n const generatedMap = generatedColumns.reduce((map, generatedColumn) => {\n const value = generatedColumn.isPrimary && generatedColumn.generationStrategy === \"increment\" && resultSet.insertId ? resultSet.insertId : keyValues[generatedColumn.databaseName];\n if (!value) return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n ok({\n result: undefined,\n generatedMap: Object.keys(generatedMap).length > 0 ? generatedMap : undefined\n });\n }, (err: any) => {\n __this.driver.connection.logger.logQueryError(err, sql, parameters, this);\n fail(err);\n });\n });\n }*/\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async startTransaction(): Promise<void> {\n throw new TypeORMError('Transactions are not supported by the Cordova driver')\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async commitTransaction(): Promise<void> {\n throw new TypeORMError('Transactions are not supported by the Cordova driver')\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async rollbackTransaction(): Promise<void> {\n throw new TypeORMError('Transactions are not supported by the Cordova driver')\n }\n\n /**\n * Removes all tables 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.query(`PRAGMA foreign_keys = OFF;`);\n try {\n const selectViewDropsQuery = `SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'`;\n const dropViewQueries: ObjectLiteral[] = await this.query(selectViewDropsQuery);\n\n const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'`;\n const dropTableQueries: ObjectLiteral[] = await this.query(selectTableDropsQuery);\n\n await Promise.all(dropViewQueries.map(q => this.query(q[\"query\"])));\n await Promise.all(dropTableQueries.map(q => this.query(q[\"query\"])));\n } finally {\n await this.query(`PRAGMA foreign_keys = ON;`);\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n */\n protected parametrize(objectLiteral: ObjectLiteral, startIndex: number = 0): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\");\n }\n}\n"],"sourceRoot":"../.."}
@@ -207,13 +207,13 @@ export declare class PostgresDriver implements Driver {
207
207
  * Used for replication.
208
208
  * If replication is not setup then returns default connection's database connection.
209
209
  */
210
- obtainMasterConnection(): Promise<any>;
210
+ obtainMasterConnection(): Promise<[any, Function]>;
211
211
  /**
212
212
  * Obtains a new database connection to a slave server.
213
213
  * Used for replication.
214
214
  * If replication is not setup then returns master (default) connection's database connection.
215
215
  */
216
- obtainSlaveConnection(): Promise<any>;
216
+ obtainSlaveConnection(): Promise<[any, Function]>;
217
217
  /**
218
218
  * Creates generated map of values generated or returned by database after INSERT query.
219
219
  *
@@ -291,33 +291,25 @@ var PostgresDriver = /** @class */ (function () {
291
291
  */
292
292
  PostgresDriver.prototype.afterConnect = function () {
293
293
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
294
- var extensionsMetadata, installExtensions;
295
- var _this = this;
296
- return (0, tslib_1.__generator)(this, function (_a) {
297
- switch (_a.label) {
294
+ var extensionsMetadata, installExtensions, _a, connection, release;
295
+ return (0, tslib_1.__generator)(this, function (_b) {
296
+ switch (_b.label) {
298
297
  case 0: return [4 /*yield*/, this.checkMetadataForExtensions()];
299
298
  case 1:
300
- extensionsMetadata = _a.sent();
299
+ extensionsMetadata = _b.sent();
301
300
  installExtensions = this.options.installExtensions === undefined || this.options.installExtensions;
302
- if (installExtensions && extensionsMetadata.hasExtensions) {
303
- return [2 /*return*/, new Promise(function (ok, fail) {
304
- _this.master.connect(function (err, connection, release) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
305
- return (0, tslib_1.__generator)(this, function (_a) {
306
- switch (_a.label) {
307
- case 0: return [4 /*yield*/, this.enableExtensions(extensionsMetadata, connection)];
308
- case 1:
309
- _a.sent();
310
- if (err)
311
- return [2 /*return*/, fail(err)];
312
- release();
313
- ok();
314
- return [2 /*return*/];
315
- }
316
- });
317
- }); });
318
- })];
319
- }
320
- return [2 /*return*/, Promise.resolve()];
301
+ if (!(installExtensions && extensionsMetadata.hasExtensions)) return [3 /*break*/, 5];
302
+ return [4 /*yield*/, this.obtainMasterConnection()];
303
+ case 2:
304
+ _a = tslib_1.__read.apply(void 0, [_b.sent(), 2]), connection = _a[0], release = _a[1];
305
+ return [4 /*yield*/, this.enableExtensions(extensionsMetadata, connection)];
306
+ case 3:
307
+ _b.sent();
308
+ return [4 /*yield*/, release()];
309
+ case 4:
310
+ _b.sent();
311
+ _b.label = 5;
312
+ case 5: return [2 /*return*/];
321
313
  }
322
314
  });
323
315
  });
@@ -916,14 +908,17 @@ var PostgresDriver = /** @class */ (function () {
916
908
  * If replication is not setup then returns default connection's database connection.
917
909
  */
918
910
  PostgresDriver.prototype.obtainMasterConnection = function () {
919
- var _this = this;
920
- return new Promise(function (ok, fail) {
921
- if (!_this.master) {
922
- fail(new error_1.TypeORMError("Driver not Connected"));
923
- return;
924
- }
925
- _this.master.connect(function (err, connection, release) {
926
- err ? fail(err) : ok([connection, release]);
911
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
912
+ var _this = this;
913
+ return (0, tslib_1.__generator)(this, function (_a) {
914
+ if (!this.master) {
915
+ throw new error_1.TypeORMError("Driver not Connected");
916
+ }
917
+ return [2 /*return*/, new Promise(function (ok, fail) {
918
+ _this.master.connect(function (err, connection, release) {
919
+ err ? fail(err) : ok([connection, release]);
920
+ });
921
+ })];
927
922
  });
928
923
  });
929
924
  };
@@ -934,13 +929,14 @@ var PostgresDriver = /** @class */ (function () {
934
929
  */
935
930
  PostgresDriver.prototype.obtainSlaveConnection = function () {
936
931
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
932
+ var random;
937
933
  var _this = this;
938
934
  return (0, tslib_1.__generator)(this, function (_a) {
939
935
  if (!this.slaves.length) {
940
936
  return [2 /*return*/, this.obtainMasterConnection()];
941
937
  }
938
+ random = Math.floor(Math.random() * this.slaves.length);
942
939
  return [2 /*return*/, new Promise(function (ok, fail) {
943
- var random = Math.floor(Math.random() * _this.slaves.length);
944
940
  _this.slaves[random].connect(function (err, connection, release) {
945
941
  err ? fail(err) : ok([connection, release]);
946
942
  });
@@ -1161,14 +1157,9 @@ var PostgresDriver = /** @class */ (function () {
1161
1157
  * Executes given query.
1162
1158
  */
1163
1159
  PostgresDriver.prototype.executeQuery = function (connection, query) {
1164
- var _this = this;
1160
+ this.connection.logger.logQuery(query);
1165
1161
  return new Promise(function (ok, fail) {
1166
- _this.connection.logger.logQuery(query);
1167
- connection.query(query, function (err, result) {
1168
- if (err)
1169
- return fail(err);
1170
- ok(result);
1171
- });
1162
+ connection.query(query, function (err, result) { return err ? fail(err) : ok(result); });
1172
1163
  });
1173
1164
  };
1174
1165
  /**