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.
- package/browser/cache/DbQueryResultCache.js +1 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +1 -1
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/data-source/BaseDataSourceOptions.d.ts +1 -1
- package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
- package/browser/data-source/DataSource.js +2 -1
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +8 -8
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +18 -18
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +8 -8
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +7 -6
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +2 -2
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
- package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +7 -7
- package/browser/driver/mysql/MysqlQueryRunner.js +23 -18
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +6 -6
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +7 -7
- package/browser/driver/oracle/OracleQueryRunner.js +15 -15
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +4 -4
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +53 -46
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +1 -1
- package/browser/driver/sap/SapQueryRunner.js +48 -25
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +10 -10
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +11 -11
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +7 -7
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +9 -9
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/GeoJsonTypes.d.ts +20 -15
- package/browser/driver/types/GeoJsonTypes.js.map +1 -1
- package/browser/index.d.ts +1 -0
- package/browser/index.js +1 -0
- package/browser/index.js.map +1 -1
- package/browser/logger/AbstractLogger.d.ts +1 -1
- package/browser/logger/AbstractLogger.js +5 -1
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/FormattedConsoleLogger.d.ts +13 -0
- package/browser/logger/FormattedConsoleLogger.js +55 -0
- package/browser/logger/FormattedConsoleLogger.js.map +1 -0
- package/browser/logger/Logger.d.ts +1 -0
- package/browser/logger/Logger.js.map +1 -1
- package/browser/logger/LoggerFactory.d.ts +1 -1
- package/browser/logger/LoggerFactory.js +3 -0
- package/browser/logger/LoggerFactory.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.js +14 -2
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js +23 -9
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +5 -0
- package/browser/platform/PlatformTools.js +16 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +1 -1
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/repository/MongoRepository.d.ts +1 -1
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +6 -6
- package/browser/subscriber/Broadcaster.js +1 -1
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/cache/DbQueryResultCache.js +1 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.js +1 -1
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/data-source/BaseDataSourceOptions.d.ts +1 -1
- package/data-source/BaseDataSourceOptions.js.map +1 -1
- package/data-source/DataSource.js +2 -1
- package/data-source/DataSource.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +8 -8
- package/driver/cockroachdb/CockroachQueryRunner.js +18 -18
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.js +8 -8
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js +7 -6
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js +2 -2
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
- package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +7 -7
- package/driver/mysql/MysqlQueryRunner.js +23 -18
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js +6 -6
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +7 -7
- package/driver/oracle/OracleQueryRunner.js +15 -15
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +4 -4
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +53 -46
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +1 -1
- package/driver/sap/SapQueryRunner.js +48 -25
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.js +10 -10
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.js +11 -11
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.js +7 -7
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +9 -9
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/GeoJsonTypes.d.ts +20 -15
- package/driver/types/GeoJsonTypes.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/index.mjs +2 -0
- package/logger/AbstractLogger.d.ts +1 -1
- package/logger/AbstractLogger.js +5 -1
- package/logger/AbstractLogger.js.map +1 -1
- package/logger/FormattedConsoleLogger.d.ts +13 -0
- package/logger/FormattedConsoleLogger.js +59 -0
- package/logger/FormattedConsoleLogger.js.map +1 -0
- package/logger/Logger.d.ts +1 -0
- package/logger/Logger.js.map +1 -1
- package/logger/LoggerFactory.d.ts +1 -1
- package/logger/LoggerFactory.js +3 -0
- package/logger/LoggerFactory.js.map +1 -1
- package/metadata/EntityListenerMetadata.js +14 -2
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectChangedColumnsComputer.js +23 -9
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/platform/PlatformTools.d.ts +5 -0
- package/platform/PlatformTools.js +16 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/SelectQueryBuilder.js +1 -1
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/repository/MongoRepository.d.ts +1 -1
- package/repository/MongoRepository.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +6 -6
- package/subscriber/Broadcaster.js +1 -1
- 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
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
85
|
-
});
|
|
92
|
+
}
|
|
86
93
|
});
|
|
87
94
|
}
|
|
88
95
|
// -------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/driver/react-native/ReactNativeQueryRunner.ts"],"names":[],"mappings":";;;AACA,
|
|
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
|
|
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.
|
|
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.
|
|
154
|
-
: await (0, util_1.promisify)(databaseConnection.exec.
|
|
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 =
|
|
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
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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.
|