typeorm 0.3.23-dev.c15cb07 → 0.3.23-dev.fadad1a

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 (152) hide show
  1. package/browser/cache/DbQueryResultCache.js +1 -1
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/cache/RedisQueryResultCache.js +1 -1
  4. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  5. package/browser/data-source/BaseDataSourceOptions.d.ts +1 -1
  6. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  7. package/browser/data-source/DataSource.js +2 -1
  8. package/browser/data-source/DataSource.js.map +1 -1
  9. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
  10. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  11. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +8 -8
  12. package/browser/driver/cockroachdb/CockroachQueryRunner.js +18 -18
  13. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  14. package/browser/driver/cordova/CordovaQueryRunner.js +8 -8
  15. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  16. package/browser/driver/expo/ExpoQueryRunner.js +7 -6
  17. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  18. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +2 -2
  19. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
  20. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  21. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  22. package/browser/driver/mysql/MysqlQueryRunner.d.ts +7 -7
  23. package/browser/driver/mysql/MysqlQueryRunner.js +23 -18
  24. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  25. package/browser/driver/nativescript/NativescriptQueryRunner.js +6 -6
  26. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  27. package/browser/driver/oracle/OracleQueryRunner.d.ts +7 -7
  28. package/browser/driver/oracle/OracleQueryRunner.js +15 -15
  29. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  30. package/browser/driver/postgres/PostgresQueryRunner.js +4 -4
  31. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  32. package/browser/driver/react-native/ReactNativeQueryRunner.js +53 -46
  33. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  34. package/browser/driver/sap/SapQueryRunner.d.ts +1 -1
  35. package/browser/driver/sap/SapQueryRunner.js +48 -25
  36. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  37. package/browser/driver/spanner/SpannerQueryRunner.js +10 -10
  38. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  39. package/browser/driver/sqlite/SqliteQueryRunner.js +11 -11
  40. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  41. package/browser/driver/sqljs/SqljsQueryRunner.js +7 -7
  42. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  43. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  44. package/browser/driver/sqlserver/SqlServerQueryRunner.js +9 -9
  45. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  46. package/browser/driver/types/GeoJsonTypes.d.ts +20 -15
  47. package/browser/driver/types/GeoJsonTypes.js.map +1 -1
  48. package/browser/index.d.ts +1 -0
  49. package/browser/index.js +1 -0
  50. package/browser/index.js.map +1 -1
  51. package/browser/logger/AbstractLogger.d.ts +1 -1
  52. package/browser/logger/AbstractLogger.js +5 -1
  53. package/browser/logger/AbstractLogger.js.map +1 -1
  54. package/browser/logger/FormattedConsoleLogger.d.ts +13 -0
  55. package/browser/logger/FormattedConsoleLogger.js +55 -0
  56. package/browser/logger/FormattedConsoleLogger.js.map +1 -0
  57. package/browser/logger/Logger.d.ts +1 -0
  58. package/browser/logger/Logger.js.map +1 -1
  59. package/browser/logger/LoggerFactory.d.ts +1 -1
  60. package/browser/logger/LoggerFactory.js +3 -0
  61. package/browser/logger/LoggerFactory.js.map +1 -1
  62. package/browser/metadata/EntityListenerMetadata.js +14 -2
  63. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  64. package/browser/persistence/SubjectChangedColumnsComputer.js +23 -9
  65. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  66. package/browser/platform/PlatformTools.d.ts +5 -0
  67. package/browser/platform/PlatformTools.js +16 -0
  68. package/browser/platform/PlatformTools.js.map +1 -1
  69. package/browser/query-builder/SelectQueryBuilder.js +1 -1
  70. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  71. package/browser/repository/MongoRepository.d.ts +1 -1
  72. package/browser/repository/MongoRepository.js.map +1 -1
  73. package/browser/subscriber/Broadcaster.d.ts +6 -6
  74. package/browser/subscriber/Broadcaster.js +1 -1
  75. package/browser/subscriber/Broadcaster.js.map +1 -1
  76. package/cache/DbQueryResultCache.js +1 -1
  77. package/cache/DbQueryResultCache.js.map +1 -1
  78. package/cache/RedisQueryResultCache.js +1 -1
  79. package/cache/RedisQueryResultCache.js.map +1 -1
  80. package/data-source/BaseDataSourceOptions.d.ts +1 -1
  81. package/data-source/BaseDataSourceOptions.js.map +1 -1
  82. package/data-source/DataSource.js +2 -1
  83. package/data-source/DataSource.js.map +1 -1
  84. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
  85. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  86. package/driver/cockroachdb/CockroachQueryRunner.d.ts +8 -8
  87. package/driver/cockroachdb/CockroachQueryRunner.js +18 -18
  88. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  89. package/driver/cordova/CordovaQueryRunner.js +8 -8
  90. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  91. package/driver/expo/ExpoQueryRunner.js +7 -6
  92. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  93. package/driver/expo/legacy/ExpoLegacyQueryRunner.js +2 -2
  94. package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
  95. package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  96. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  97. package/driver/mysql/MysqlQueryRunner.d.ts +7 -7
  98. package/driver/mysql/MysqlQueryRunner.js +23 -18
  99. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  100. package/driver/nativescript/NativescriptQueryRunner.js +6 -6
  101. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  102. package/driver/oracle/OracleQueryRunner.d.ts +7 -7
  103. package/driver/oracle/OracleQueryRunner.js +15 -15
  104. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  105. package/driver/postgres/PostgresQueryRunner.js +4 -4
  106. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  107. package/driver/react-native/ReactNativeQueryRunner.js +53 -46
  108. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  109. package/driver/sap/SapQueryRunner.d.ts +1 -1
  110. package/driver/sap/SapQueryRunner.js +48 -25
  111. package/driver/sap/SapQueryRunner.js.map +1 -1
  112. package/driver/spanner/SpannerQueryRunner.js +10 -10
  113. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  114. package/driver/sqlite/SqliteQueryRunner.js +11 -11
  115. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  116. package/driver/sqljs/SqljsQueryRunner.js +7 -7
  117. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  118. package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  119. package/driver/sqlserver/SqlServerQueryRunner.js +9 -9
  120. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  121. package/driver/types/GeoJsonTypes.d.ts +20 -15
  122. package/driver/types/GeoJsonTypes.js.map +1 -1
  123. package/index.d.ts +1 -0
  124. package/index.js +1 -0
  125. package/index.js.map +1 -1
  126. package/index.mjs +2 -0
  127. package/logger/AbstractLogger.d.ts +1 -1
  128. package/logger/AbstractLogger.js +5 -1
  129. package/logger/AbstractLogger.js.map +1 -1
  130. package/logger/FormattedConsoleLogger.d.ts +13 -0
  131. package/logger/FormattedConsoleLogger.js +59 -0
  132. package/logger/FormattedConsoleLogger.js.map +1 -0
  133. package/logger/Logger.d.ts +1 -0
  134. package/logger/Logger.js.map +1 -1
  135. package/logger/LoggerFactory.d.ts +1 -1
  136. package/logger/LoggerFactory.js +3 -0
  137. package/logger/LoggerFactory.js.map +1 -1
  138. package/metadata/EntityListenerMetadata.js +14 -2
  139. package/metadata/EntityListenerMetadata.js.map +1 -1
  140. package/package.json +1 -1
  141. package/persistence/SubjectChangedColumnsComputer.js +23 -9
  142. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  143. package/platform/PlatformTools.d.ts +5 -0
  144. package/platform/PlatformTools.js +16 -0
  145. package/platform/PlatformTools.js.map +1 -1
  146. package/query-builder/SelectQueryBuilder.js +1 -1
  147. package/query-builder/SelectQueryBuilder.js.map +1 -1
  148. package/repository/MongoRepository.d.ts +1 -1
  149. package/repository/MongoRepository.js.map +1 -1
  150. package/subscriber/Broadcaster.d.ts +6 -6
  151. package/subscriber/Broadcaster.js +1 -1
  152. package/subscriber/Broadcaster.js.map +1 -1
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReactNativeQueryRunner = void 0;
4
- const QueryRunnerAlreadyReleasedError_1 = require("../../error/QueryRunnerAlreadyReleasedError");
5
4
  const QueryFailedError_1 = require("../../error/QueryFailedError");
6
- const AbstractSqliteQueryRunner_1 = require("../sqlite-abstract/AbstractSqliteQueryRunner");
7
- const Broadcaster_1 = require("../../subscriber/Broadcaster");
5
+ const QueryRunnerAlreadyReleasedError_1 = require("../../error/QueryRunnerAlreadyReleasedError");
8
6
  const QueryResult_1 = require("../../query-runner/QueryResult");
7
+ const Broadcaster_1 = require("../../subscriber/Broadcaster");
9
8
  const BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
9
+ const AbstractSqliteQueryRunner_1 = require("../sqlite-abstract/AbstractSqliteQueryRunner");
10
10
  /**
11
11
  * Runs queries on a single sqlite database connection.
12
12
  */
@@ -35,54 +35,61 @@ class ReactNativeQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQ
35
35
  /**
36
36
  * Executes a given SQL query.
37
37
  */
38
- query(query, parameters, useStructuredResult = false) {
38
+ async query(query, parameters, useStructuredResult = false) {
39
39
  if (this.isReleased)
40
40
  throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
41
+ const databaseConnection = await this.connect();
42
+ this.driver.connection.logger.logQuery(query, parameters, this);
43
+ await this.broadcaster.broadcast("BeforeQuery", query, parameters);
44
+ const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
45
+ const queryStartTime = Date.now();
41
46
  return new Promise(async (ok, fail) => {
42
- const databaseConnection = await this.connect();
43
- const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
44
- this.driver.connection.logger.logQuery(query, parameters, this);
45
- this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
46
- const queryStartTime = +new Date();
47
- databaseConnection.executeSql(query, parameters, async (raw) => {
48
- // log slow queries if maxQueryExecution time is set
49
- const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
50
- const queryEndTime = +new Date();
51
- const queryExecutionTime = queryEndTime - queryStartTime;
52
- this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, raw, undefined);
53
- if (maxQueryExecutionTime &&
54
- queryExecutionTime > maxQueryExecutionTime)
55
- this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
56
- if (broadcasterResult.promises.length > 0)
57
- await Promise.all(broadcasterResult.promises);
58
- const result = new QueryResult_1.QueryResult();
59
- if (raw?.hasOwnProperty("rowsAffected")) {
60
- result.affected = raw.rowsAffected;
61
- }
62
- if (raw?.hasOwnProperty("rows")) {
63
- const records = [];
64
- for (let i = 0; i < raw.rows.length; i++) {
65
- records.push(raw.rows.item(i));
47
+ try {
48
+ databaseConnection.executeSql(query, parameters, async (raw) => {
49
+ // log slow queries if maxQueryExecution time is set
50
+ const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
51
+ const queryEndTime = Date.now();
52
+ const queryExecutionTime = queryEndTime - queryStartTime;
53
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, raw, undefined);
54
+ if (maxQueryExecutionTime &&
55
+ queryExecutionTime > maxQueryExecutionTime)
56
+ this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
57
+ if (broadcasterResult.promises.length > 0)
58
+ await Promise.all(broadcasterResult.promises);
59
+ const result = new QueryResult_1.QueryResult();
60
+ if (raw?.hasOwnProperty("rowsAffected")) {
61
+ result.affected = raw.rowsAffected;
62
+ }
63
+ if (raw?.hasOwnProperty("rows")) {
64
+ const records = [];
65
+ for (let i = 0; i < raw.rows.length; i++) {
66
+ records.push(raw.rows.item(i));
67
+ }
68
+ result.raw = records;
69
+ result.records = records;
70
+ }
71
+ // return id of inserted row, if query was insert statement.
72
+ if (query.substr(0, 11) === "INSERT INTO") {
73
+ result.raw = raw.insertId;
74
+ }
75
+ if (useStructuredResult) {
76
+ ok(result);
77
+ }
78
+ else {
79
+ ok(result.raw);
66
80
  }
67
- result.raw = records;
68
- result.records = records;
69
- }
70
- // return id of inserted row, if query was insert statement.
71
- if (query.substr(0, 11) === "INSERT INTO") {
72
- result.raw = raw.insertId;
73
- }
74
- if (useStructuredResult) {
75
- ok(result);
76
- }
77
- else {
78
- ok(result.raw);
79
- }
80
- }, async (err) => {
81
- this.driver.connection.logger.logQueryError(err, query, parameters, this);
82
- this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
81
+ }, async (err) => {
82
+ this.driver.connection.logger.logQueryError(err, query, parameters, this);
83
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
84
+ fail(new QueryFailedError_1.QueryFailedError(query, parameters, err));
85
+ });
86
+ }
87
+ catch (err) {
88
+ fail(err);
89
+ }
90
+ finally {
83
91
  await broadcasterResult.wait();
84
- fail(new QueryFailedError_1.QueryFailedError(query, parameters, err));
85
- });
92
+ }
86
93
  });
87
94
  }
88
95
  // -------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/react-native/ReactNativeQueryRunner.ts"],"names":[],"mappings":"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","file":"ReactNativeQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { ReactNativeDriver } from \"./ReactNativeDriver\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class ReactNativeQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n // @ts-ignore temporary, we need to fix the issue with the AbstractSqliteDriver and circular errors\n driver: ReactNativeDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: ReactNativeDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n return new Promise(async (ok, fail) => {\n const databaseConnection = await this.connect()\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n\n const queryStartTime = +new Date()\n databaseConnection.executeSql(\n query,\n parameters,\n async (raw: any) => {\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n if (broadcasterResult.promises.length > 0)\n await Promise.all(broadcasterResult.promises)\n\n const result = new QueryResult()\n\n if (raw?.hasOwnProperty(\"rowsAffected\")) {\n result.affected = raw.rowsAffected\n }\n\n if (raw?.hasOwnProperty(\"rows\")) {\n const records = []\n for (let i = 0; i < raw.rows.length; i++) {\n records.push(raw.rows.item(i))\n }\n\n result.raw = records\n result.records = records\n }\n\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n result.raw = raw.insertId\n }\n\n if (useStructuredResult) {\n ok(result)\n } else {\n ok(result.raw)\n }\n },\n async (err: any) => {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n await broadcasterResult.wait()\n\n fail(new QueryFailedError(query, parameters, err))\n },\n )\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(\n objectLiteral: ObjectLiteral,\n startIndex: number = 0,\n ): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\")\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/react-native/ReactNativeQueryRunner.ts"],"names":[],"mappings":"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","file":"ReactNativeQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { ReactNativeDriver } from \"./ReactNativeDriver\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class ReactNativeQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n // @ts-ignore temporary, we need to fix the issue with the AbstractSqliteDriver and circular errors\n driver: ReactNativeDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: ReactNativeDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const databaseConnection = await this.connect()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const broadcasterResult = new BroadcasterResult()\n\n const queryStartTime = Date.now()\n\n return new Promise(async (ok, fail) => {\n try {\n databaseConnection.executeSql(\n query,\n parameters,\n async (raw: any) => {\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n if (broadcasterResult.promises.length > 0)\n await Promise.all(broadcasterResult.promises)\n\n const result = new QueryResult()\n\n if (raw?.hasOwnProperty(\"rowsAffected\")) {\n result.affected = raw.rowsAffected\n }\n\n if (raw?.hasOwnProperty(\"rows\")) {\n const records = []\n for (let i = 0; i < raw.rows.length; i++) {\n records.push(raw.rows.item(i))\n }\n\n result.raw = records\n result.records = records\n }\n\n // return id of inserted row, if query was insert statement.\n if (query.substr(0, 11) === \"INSERT INTO\") {\n result.raw = raw.insertId\n }\n\n if (useStructuredResult) {\n ok(result)\n } else {\n ok(result.raw)\n }\n },\n async (err: any) => {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n\n fail(new QueryFailedError(query, parameters, err))\n },\n )\n } catch (err) {\n fail(err)\n } finally {\n await broadcasterResult.wait()\n }\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(\n objectLiteral: ObjectLiteral,\n startIndex: number = 0,\n ): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\")\n }\n}\n"],"sourceRoot":"../.."}
@@ -11,8 +11,8 @@ import { TableUnique } from "../../schema-builder/table/TableUnique";
11
11
  import { View } from "../../schema-builder/view/View";
12
12
  import { Query } from "../Query";
13
13
  import { IsolationLevel } from "../types/IsolationLevel";
14
- import { SapDriver } from "./SapDriver";
15
14
  import { ReplicationMode } from "../types/ReplicationMode";
15
+ import { SapDriver } from "./SapDriver";
16
16
  /**
17
17
  * Runs queries on a single SQL Server database connection.
18
18
  */
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SapQueryRunner = void 0;
4
+ const util_1 = require("util");
5
+ const error_1 = require("../../error");
4
6
  const QueryRunnerAlreadyReleasedError_1 = require("../../error/QueryRunnerAlreadyReleasedError");
5
7
  const TransactionAlreadyStartedError_1 = require("../../error/TransactionAlreadyStartedError");
6
8
  const TransactionNotStartedError_1 = require("../../error/TransactionNotStartedError");
7
9
  const BaseQueryRunner_1 = require("../../query-runner/BaseQueryRunner");
10
+ const QueryLock_1 = require("../../query-runner/QueryLock");
11
+ const QueryResult_1 = require("../../query-runner/QueryResult");
8
12
  const Table_1 = require("../../schema-builder/table/Table");
9
13
  const TableCheck_1 = require("../../schema-builder/table/TableCheck");
10
14
  const TableColumn_1 = require("../../schema-builder/table/TableColumn");
@@ -13,15 +17,11 @@ const TableIndex_1 = require("../../schema-builder/table/TableIndex");
13
17
  const TableUnique_1 = require("../../schema-builder/table/TableUnique");
14
18
  const View_1 = require("../../schema-builder/view/View");
15
19
  const Broadcaster_1 = require("../../subscriber/Broadcaster");
20
+ const BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
21
+ const InstanceChecker_1 = require("../../util/InstanceChecker");
16
22
  const OrmUtils_1 = require("../../util/OrmUtils");
17
23
  const Query_1 = require("../Query");
18
- const error_1 = require("../../error");
19
- const QueryResult_1 = require("../../query-runner/QueryResult");
20
- const QueryLock_1 = require("../../query-runner/QueryLock");
21
24
  const MetadataTableType_1 = require("../types/MetadataTableType");
22
- const InstanceChecker_1 = require("../../util/InstanceChecker");
23
- const util_1 = require("util");
24
- const BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
25
25
  /**
26
26
  * Runs queries on a single SQL Server database connection.
27
27
  */
@@ -135,30 +135,30 @@ class SapQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
135
135
  if (this.isReleased)
136
136
  throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
137
137
  const release = await this.lock.acquire();
138
+ const databaseConnection = await this.connect();
138
139
  let statement;
139
140
  const result = new QueryResult_1.QueryResult();
141
+ this.driver.connection.logger.logQuery(query, parameters, this);
142
+ await this.broadcaster.broadcast("BeforeQuery", query, parameters);
140
143
  const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
141
144
  try {
142
- const databaseConnection = await this.connect();
143
- this.driver.connection.logger.logQuery(query, parameters, this);
144
- this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
145
- const queryStartTime = +new Date();
145
+ const queryStartTime = Date.now();
146
146
  const isInsertQuery = query.substr(0, 11) === "INSERT INTO";
147
147
  if (parameters?.some(Array.isArray)) {
148
- statement = await (0, util_1.promisify)(databaseConnection.prepare.bind(databaseConnection))(query);
148
+ statement = await (0, util_1.promisify)(databaseConnection.prepare).call(databaseConnection, query);
149
149
  }
150
150
  let raw;
151
151
  try {
152
152
  raw = statement
153
- ? await (0, util_1.promisify)(statement.exec.bind(statement))(parameters)
154
- : await (0, util_1.promisify)(databaseConnection.exec.bind(databaseConnection))(query, parameters, {});
153
+ ? await (0, util_1.promisify)(statement.exec).call(statement, parameters)
154
+ : await (0, util_1.promisify)(databaseConnection.exec).call(databaseConnection, query, parameters, {});
155
155
  }
156
156
  catch (err) {
157
157
  throw new error_1.QueryFailedError(query, parameters, err);
158
158
  }
159
159
  // log slow queries if maxQueryExecution time is set
160
160
  const maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;
161
- const queryEndTime = +new Date();
161
+ const queryEndTime = Date.now();
162
162
  const queryExecutionTime = queryEndTime - queryStartTime;
163
163
  this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, raw, undefined);
164
164
  if (maxQueryExecutionTime &&
@@ -211,17 +211,40 @@ class SapQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
211
211
  async stream(query, parameters, onEnd, onError) {
212
212
  if (this.isReleased)
213
213
  throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
214
- const databaseConnection = await this.connect();
215
- this.driver.connection.logger.logQuery(query, parameters, this);
216
- const prepareAsync = (0, util_1.promisify)(databaseConnection.prepare).bind(databaseConnection);
217
- const statement = await prepareAsync(query);
218
- const resultSet = statement.executeQuery(parameters);
219
- const stream = this.driver.streamClient.createObjectStream(resultSet);
220
- if (onEnd)
221
- stream.on("end", onEnd);
222
- if (onError)
223
- stream.on("error", onError);
224
- return stream;
214
+ const release = await this.lock.acquire();
215
+ let statement;
216
+ let resultSet;
217
+ const cleanup = async () => {
218
+ if (resultSet) {
219
+ await (0, util_1.promisify)(resultSet.close).call(resultSet);
220
+ }
221
+ if (statement) {
222
+ await (0, util_1.promisify)(statement.drop).call(statement);
223
+ }
224
+ release();
225
+ };
226
+ try {
227
+ const databaseConnection = await this.connect();
228
+ this.driver.connection.logger.logQuery(query, parameters, this);
229
+ statement = await (0, util_1.promisify)(databaseConnection.prepare).call(databaseConnection, query);
230
+ resultSet = await (0, util_1.promisify)(statement.executeQuery).call(statement, parameters);
231
+ const stream = this.driver.streamClient.createObjectStream(resultSet);
232
+ stream.on("end", async () => {
233
+ await cleanup();
234
+ onEnd?.();
235
+ });
236
+ stream.on("error", async (error) => {
237
+ this.driver.connection.logger.logQueryError(error, query, parameters, this);
238
+ await cleanup();
239
+ onError?.(error);
240
+ });
241
+ return stream;
242
+ }
243
+ catch (error) {
244
+ this.driver.connection.logger.logQueryError(error, query, parameters, this);
245
+ await cleanup();
246
+ throw new error_1.QueryFailedError(query, parameters, error);
247
+ }
225
248
  }
226
249
  /**
227
250
  * Returns all available database names including system databases.