typeorm 0.3.23-dev.184f463 → 0.3.23-dev.274bdf2

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