From 861573377bb33b73232399c21b1b3a5c07b58036 Mon Sep 17 00:00:00 2001 From: Daniel Pekevski Date: Wed, 6 Oct 2021 14:22:12 +1100 Subject: [PATCH] fix: NativescriptQueryRunner's query method fails when targeting es2017 (#8182) --- .../nativescript/NativescriptQueryRunner.ts | 53 ++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/driver/nativescript/NativescriptQueryRunner.ts b/src/driver/nativescript/NativescriptQueryRunner.ts index fe81d5ec14..5953f2c095 100644 --- a/src/driver/nativescript/NativescriptQueryRunner.ts +++ b/src/driver/nativescript/NativescriptQueryRunner.ts @@ -31,51 +31,56 @@ export class NativescriptQueryRunner extends AbstractSqliteQueryRunner { * Executes a given SQL query. */ async query(query: string, parameters?: any[], useStructuredResult = false): Promise { - if (this.isReleased) + + if (this.isReleased) { throw new QueryRunnerAlreadyReleasedError(); + } const connection = this.driver.connection; - return new Promise( (ok, fail) => { + return new Promise(async (ok, fail) => { + + const databaseConnection = await this.connect(); const isInsertQuery = query.substr(0, 11) === "INSERT INTO"; + connection.logger.logQuery(query, parameters, this); - const handler = function (err: any, raw: any) { + const handler = (err: any, raw: any) => { // log slow queries if maxQueryExecution time is set const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime; const queryEndTime = +new Date(); const queryExecutionTime = queryEndTime - queryStartTime; - if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) + + if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) { connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this); - + } + if (err) { connection.logger.logQueryError(err, query, parameters, this); fail(new QueryFailedError(query, parameters, err)); - } else { - const result = new QueryResult(); + } - result.raw = raw; + const result = new QueryResult(); + result.raw = raw; - if (!isInsertQuery && Array.isArray(raw)) { - result.records = raw; - } + if (!isInsertQuery && Array.isArray(raw)) { + result.records = raw; + } - if (useStructuredResult) { - ok(result); - } else { - ok(result.raw); - } + if (useStructuredResult) { + ok(result); + } else { + ok(result.raw); } + }; - this.driver.connection.logger.logQuery(query, parameters, this); const queryStartTime = +new Date(); - this.connect().then(databaseConnection => { - if (isInsertQuery) { - databaseConnection.execSQL(query, parameters, handler); - } else { - databaseConnection.all(query, parameters, handler); - } - }); + + if (isInsertQuery) { + databaseConnection.execSQL(query, parameters, handler); + } else { + databaseConnection.all(query, parameters, handler); + } }); }