typeorm 0.2.39-dev.ef33cf4 → 0.2.39-dev.f79ae58

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 (83) hide show
  1. package/browser/driver/cockroachdb/CockroachDriver.js +23 -14
  2. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  3. package/browser/driver/cockroachdb/CockroachQueryRunner.js +63 -69
  4. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  5. package/browser/driver/cordova/CordovaDriver.d.ts +1 -1
  6. package/browser/driver/cordova/CordovaDriver.js +25 -18
  7. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  8. package/browser/driver/cordova/CordovaQueryRunner.js +50 -43
  9. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  10. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  11. package/browser/driver/postgres/PostgresDriver.js +31 -40
  12. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  13. package/browser/driver/postgres/PostgresQueryRunner.js +7 -15
  14. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  15. package/browser/driver/sap/SapQueryRunner.js +10 -28
  16. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  17. package/browser/driver/sqljs/SqljsDriver.js +5 -22
  18. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  19. package/browser/driver/sqljs/SqljsQueryRunner.js +9 -10
  20. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  21. package/browser/find-options/FindOptionsUtils.d.ts +2 -0
  22. package/browser/find-options/FindOptionsUtils.js +19 -1
  23. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  24. package/browser/migration/MigrationExecutor.d.ts +1 -1
  25. package/browser/migration/MigrationExecutor.js +2 -14
  26. package/browser/migration/MigrationExecutor.js.map +1 -1
  27. package/browser/persistence/SubjectExecutor.js +3 -3
  28. package/browser/persistence/SubjectExecutor.js.map +1 -1
  29. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  30. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  31. package/browser/query-builder/QueryExpressionMap.d.ts +6 -0
  32. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  33. package/browser/query-builder/SelectQueryBuilder.d.ts +7 -1
  34. package/browser/query-builder/SelectQueryBuilder.js +37 -5
  35. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  36. package/browser/query-runner/BaseQueryRunner.js +3 -2
  37. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  38. package/browser/repository/TreeRepository.d.ts +3 -3
  39. package/browser/repository/TreeRepository.js +28 -39
  40. package/browser/repository/TreeRepository.js.map +1 -1
  41. package/commands/InitCommand.js +2 -1
  42. package/commands/InitCommand.js.map +1 -1
  43. package/driver/cockroachdb/CockroachDriver.js +23 -14
  44. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  45. package/driver/cockroachdb/CockroachQueryRunner.js +63 -69
  46. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  47. package/driver/cordova/CordovaDriver.d.ts +1 -1
  48. package/driver/cordova/CordovaDriver.js +25 -18
  49. package/driver/cordova/CordovaDriver.js.map +1 -1
  50. package/driver/cordova/CordovaQueryRunner.js +50 -43
  51. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  52. package/driver/postgres/PostgresDriver.d.ts +2 -2
  53. package/driver/postgres/PostgresDriver.js +31 -40
  54. package/driver/postgres/PostgresDriver.js.map +1 -1
  55. package/driver/postgres/PostgresQueryRunner.js +7 -15
  56. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  57. package/driver/sap/SapQueryRunner.js +10 -28
  58. package/driver/sap/SapQueryRunner.js.map +1 -1
  59. package/driver/sqljs/SqljsDriver.js +5 -22
  60. package/driver/sqljs/SqljsDriver.js.map +1 -1
  61. package/driver/sqljs/SqljsQueryRunner.js +9 -10
  62. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  63. package/find-options/FindOptionsUtils.d.ts +2 -0
  64. package/find-options/FindOptionsUtils.js +19 -1
  65. package/find-options/FindOptionsUtils.js.map +1 -1
  66. package/migration/MigrationExecutor.d.ts +1 -1
  67. package/migration/MigrationExecutor.js +2 -14
  68. package/migration/MigrationExecutor.js.map +1 -1
  69. package/package.json +1 -1
  70. package/persistence/SubjectExecutor.js +3 -3
  71. package/persistence/SubjectExecutor.js.map +1 -1
  72. package/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  73. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  74. package/query-builder/QueryExpressionMap.d.ts +6 -0
  75. package/query-builder/QueryExpressionMap.js.map +1 -1
  76. package/query-builder/SelectQueryBuilder.d.ts +7 -1
  77. package/query-builder/SelectQueryBuilder.js +37 -5
  78. package/query-builder/SelectQueryBuilder.js.map +1 -1
  79. package/query-runner/BaseQueryRunner.js +3 -2
  80. package/query-runner/BaseQueryRunner.js.map +1 -1
  81. package/repository/TreeRepository.d.ts +3 -3
  82. package/repository/TreeRepository.js +27 -38
  83. 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
  */
@@ -32,8 +32,8 @@ var CordovaDriver = /** @class */ (function (_super) {
32
32
  return __awaiter(this, void 0, void 0, function () {
33
33
  var _this = this;
34
34
  return __generator(this, function (_a) {
35
+ this.queryRunner = undefined;
35
36
  return [2 /*return*/, new Promise(function (ok, fail) {
36
- _this.queryRunner = undefined;
37
37
  _this.databaseConnection.close(ok, fail);
38
38
  })];
39
39
  });
@@ -54,23 +54,30 @@ var CordovaDriver = /** @class */ (function (_super) {
54
54
  * Creates connection with the database.
55
55
  */
56
56
  CordovaDriver.prototype.createDatabaseConnection = function () {
57
- var _this = this;
58
- return new Promise(function (ok, fail) {
59
- var options = Object.assign({}, {
60
- name: _this.options.database,
61
- location: _this.options.location,
62
- }, _this.options.extra || {});
63
- _this.sqlite.openDatabase(options, function (db) {
64
- var databaseConnection = db;
65
- // we need to enable foreign keys in sqlite to make sure all foreign key related features
66
- // working properly. this also makes onDelete to work with sqlite.
67
- databaseConnection.executeSql("PRAGMA foreign_keys = ON;", [], function (result) {
68
- ok(databaseConnection);
69
- }, function (error) {
70
- fail(error);
71
- });
72
- }, function (error) {
73
- fail(error);
57
+ return __awaiter(this, void 0, void 0, function () {
58
+ var options, connection;
59
+ var _this = this;
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0:
63
+ options = Object.assign({}, {
64
+ name: this.options.database,
65
+ location: this.options.location,
66
+ }, this.options.extra || {});
67
+ return [4 /*yield*/, new Promise(function (resolve) {
68
+ _this.sqlite.openDatabase(options, function (db) { return resolve(db); });
69
+ })];
70
+ case 1:
71
+ connection = _a.sent();
72
+ return [4 /*yield*/, new Promise(function (ok, fail) {
73
+ // we need to enable foreign keys in sqlite to make sure all foreign key related features
74
+ // working properly. this also makes onDelete to work with sqlite.
75
+ connection.executeSql("PRAGMA foreign_keys = ON;", [], function () { return ok(); }, function (err) { return fail(err); });
76
+ })];
77
+ case 2:
78
+ _a.sent();
79
+ return [2 /*return*/, connection];
80
+ }
74
81
  });
75
82
  });
76
83
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/cordova/CordovaDriver.ts"],"names":[],"mappings":"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","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":["../browser/src/driver/cordova/CordovaDriver.ts"],"names":[],"mappings":"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","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":"../.."}
@@ -26,53 +26,60 @@ var CordovaQueryRunner = /** @class */ (function (_super) {
26
26
  CordovaQueryRunner.prototype.query = function (query, parameters, useStructuredResult) {
27
27
  if (useStructuredResult === void 0) { useStructuredResult = false; }
28
28
  return __awaiter(this, void 0, void 0, function () {
29
+ var databaseConnection, queryStartTime, raw, maxQueryExecutionTime, queryEndTime, queryExecutionTime, result, resultSet, i, err_1;
29
30
  var _this = this;
30
31
  return __generator(this, function (_a) {
31
- if (this.isReleased)
32
- throw new QueryRunnerAlreadyReleasedError();
33
- return [2 /*return*/, new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {
34
- var databaseConnection, queryStartTime;
35
- var _this = this;
36
- return __generator(this, function (_a) {
37
- switch (_a.label) {
38
- case 0: return [4 /*yield*/, this.connect()];
39
- case 1:
40
- databaseConnection = _a.sent();
41
- this.driver.connection.logger.logQuery(query, parameters, this);
42
- queryStartTime = +new Date();
43
- databaseConnection.executeSql(query, parameters, function (raw) {
44
- // log slow queries if maxQueryExecution time is set
45
- var maxQueryExecutionTime = _this.driver.options.maxQueryExecutionTime;
46
- var queryEndTime = +new Date();
47
- var queryExecutionTime = queryEndTime - queryStartTime;
48
- if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)
49
- _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this);
50
- var result = new QueryResult();
51
- if (query.substr(0, 11) === "INSERT INTO") {
52
- result.raw = raw.insertId;
53
- }
54
- else {
55
- var resultSet = [];
56
- for (var i = 0; i < raw.rows.length; i++) {
57
- resultSet.push(raw.rows.item(i));
58
- }
59
- result.records = resultSet;
60
- result.raw = resultSet;
61
- }
62
- if (useStructuredResult) {
63
- ok(result);
64
- }
65
- else {
66
- ok(result.raw);
67
- }
68
- }, function (err) {
69
- _this.driver.connection.logger.logQueryError(err, query, parameters, _this);
70
- fail(new QueryFailedError(query, parameters, err));
71
- });
32
+ switch (_a.label) {
33
+ case 0:
34
+ if (this.isReleased)
35
+ throw new QueryRunnerAlreadyReleasedError();
36
+ return [4 /*yield*/, this.connect()];
37
+ case 1:
38
+ databaseConnection = _a.sent();
39
+ this.driver.connection.logger.logQuery(query, parameters, this);
40
+ queryStartTime = +new Date();
41
+ _a.label = 2;
42
+ case 2:
43
+ _a.trys.push([2, 4, , 5]);
44
+ return [4 /*yield*/, new Promise(function (ok, fail) { return __awaiter(_this, void 0, void 0, function () {
45
+ return __generator(this, function (_a) {
46
+ databaseConnection.executeSql(query, parameters, function (raw) { return ok(raw); }, function (err) { return fail(err); });
72
47
  return [2 /*return*/];
48
+ });
49
+ }); })];
50
+ case 3:
51
+ raw = _a.sent();
52
+ maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
53
+ queryEndTime = +new Date();
54
+ queryExecutionTime = queryEndTime - queryStartTime;
55
+ if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) {
56
+ this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
57
+ }
58
+ result = new QueryResult();
59
+ if (query.substr(0, 11) === "INSERT INTO") {
60
+ result.raw = raw.insertId;
61
+ }
62
+ else {
63
+ resultSet = [];
64
+ for (i = 0; i < raw.rows.length; i++) {
65
+ resultSet.push(raw.rows.item(i));
73
66
  }
74
- });
75
- }); })];
67
+ result.records = resultSet;
68
+ result.raw = resultSet;
69
+ }
70
+ if (useStructuredResult) {
71
+ return [2 /*return*/, result];
72
+ }
73
+ else {
74
+ return [2 /*return*/, result.raw];
75
+ }
76
+ return [3 /*break*/, 5];
77
+ case 4:
78
+ err_1 = _a.sent();
79
+ this.driver.connection.logger.logQueryError(err_1, query, parameters, this);
80
+ throw new QueryFailedError(query, parameters, err_1);
81
+ case 5: return [2 /*return*/];
82
+ }
76
83
  });
77
84
  });
78
85
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/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":["../browser/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
  *
@@ -288,33 +288,25 @@ var PostgresDriver = /** @class */ (function () {
288
288
  */
289
289
  PostgresDriver.prototype.afterConnect = function () {
290
290
  return __awaiter(this, void 0, void 0, function () {
291
- var extensionsMetadata, installExtensions;
292
- var _this = this;
293
- return __generator(this, function (_a) {
294
- switch (_a.label) {
291
+ var extensionsMetadata, installExtensions, _a, connection, release;
292
+ return __generator(this, function (_b) {
293
+ switch (_b.label) {
295
294
  case 0: return [4 /*yield*/, this.checkMetadataForExtensions()];
296
295
  case 1:
297
- extensionsMetadata = _a.sent();
296
+ extensionsMetadata = _b.sent();
298
297
  installExtensions = this.options.installExtensions === undefined || this.options.installExtensions;
299
- if (installExtensions && extensionsMetadata.hasExtensions) {
300
- return [2 /*return*/, new Promise(function (ok, fail) {
301
- _this.master.connect(function (err, connection, release) { return __awaiter(_this, void 0, void 0, function () {
302
- return __generator(this, function (_a) {
303
- switch (_a.label) {
304
- case 0: return [4 /*yield*/, this.enableExtensions(extensionsMetadata, connection)];
305
- case 1:
306
- _a.sent();
307
- if (err)
308
- return [2 /*return*/, fail(err)];
309
- release();
310
- ok();
311
- return [2 /*return*/];
312
- }
313
- });
314
- }); });
315
- })];
316
- }
317
- return [2 /*return*/, Promise.resolve()];
298
+ if (!(installExtensions && extensionsMetadata.hasExtensions)) return [3 /*break*/, 5];
299
+ return [4 /*yield*/, this.obtainMasterConnection()];
300
+ case 2:
301
+ _a = __read.apply(void 0, [_b.sent(), 2]), connection = _a[0], release = _a[1];
302
+ return [4 /*yield*/, this.enableExtensions(extensionsMetadata, connection)];
303
+ case 3:
304
+ _b.sent();
305
+ return [4 /*yield*/, release()];
306
+ case 4:
307
+ _b.sent();
308
+ _b.label = 5;
309
+ case 5: return [2 /*return*/];
318
310
  }
319
311
  });
320
312
  });
@@ -913,14 +905,17 @@ var PostgresDriver = /** @class */ (function () {
913
905
  * If replication is not setup then returns default connection's database connection.
914
906
  */
915
907
  PostgresDriver.prototype.obtainMasterConnection = function () {
916
- var _this = this;
917
- return new Promise(function (ok, fail) {
918
- if (!_this.master) {
919
- fail(new TypeORMError("Driver not Connected"));
920
- return;
921
- }
922
- _this.master.connect(function (err, connection, release) {
923
- err ? fail(err) : ok([connection, release]);
908
+ return __awaiter(this, void 0, void 0, function () {
909
+ var _this = this;
910
+ return __generator(this, function (_a) {
911
+ if (!this.master) {
912
+ throw new TypeORMError("Driver not Connected");
913
+ }
914
+ return [2 /*return*/, new Promise(function (ok, fail) {
915
+ _this.master.connect(function (err, connection, release) {
916
+ err ? fail(err) : ok([connection, release]);
917
+ });
918
+ })];
924
919
  });
925
920
  });
926
921
  };
@@ -931,13 +926,14 @@ var PostgresDriver = /** @class */ (function () {
931
926
  */
932
927
  PostgresDriver.prototype.obtainSlaveConnection = function () {
933
928
  return __awaiter(this, void 0, void 0, function () {
929
+ var random;
934
930
  var _this = this;
935
931
  return __generator(this, function (_a) {
936
932
  if (!this.slaves.length) {
937
933
  return [2 /*return*/, this.obtainMasterConnection()];
938
934
  }
935
+ random = Math.floor(Math.random() * this.slaves.length);
939
936
  return [2 /*return*/, new Promise(function (ok, fail) {
940
- var random = Math.floor(Math.random() * _this.slaves.length);
941
937
  _this.slaves[random].connect(function (err, connection, release) {
942
938
  err ? fail(err) : ok([connection, release]);
943
939
  });
@@ -1158,14 +1154,9 @@ var PostgresDriver = /** @class */ (function () {
1158
1154
  * Executes given query.
1159
1155
  */
1160
1156
  PostgresDriver.prototype.executeQuery = function (connection, query) {
1161
- var _this = this;
1157
+ this.connection.logger.logQuery(query);
1162
1158
  return new Promise(function (ok, fail) {
1163
- _this.connection.logger.logQuery(query);
1164
- connection.query(query, function (err, result) {
1165
- if (err)
1166
- return fail(err);
1167
- ok(result);
1168
- });
1159
+ connection.query(query, function (err, result) { return err ? fail(err) : ok(result); });
1169
1160
  });
1170
1161
  };
1171
1162
  /**