| import * as tslib_1 from "tslib"; | 
| import { QueryRunnerAlreadyReleasedError } from "../../error/QueryRunnerAlreadyReleasedError"; | 
| import { QueryFailedError } from "../../error/QueryFailedError"; | 
| import { AbstractSqliteQueryRunner } from "../sqlite-abstract/AbstractSqliteQueryRunner"; | 
| import { Broadcaster } from "../../subscriber/Broadcaster"; | 
| /** | 
|  * Runs queries on a single sqlite database connection. | 
|  */ | 
| var CordovaQueryRunner = /** @class */ (function (_super) { | 
|     tslib_1.__extends(CordovaQueryRunner, _super); | 
|     // ------------------------------------------------------------------------- | 
|     // Constructor | 
|     // ------------------------------------------------------------------------- | 
|     function CordovaQueryRunner(driver) { | 
|         var _this = _super.call(this) || this; | 
|         _this.driver = driver; | 
|         _this.connection = driver.connection; | 
|         _this.broadcaster = new Broadcaster(_this); | 
|         return _this; | 
|     } | 
|     /** | 
|      * Executes a given SQL query. | 
|      */ | 
|     CordovaQueryRunner.prototype.query = function (query, parameters) { | 
|         var _this = this; | 
|         if (this.isReleased) | 
|             throw new QueryRunnerAlreadyReleasedError(); | 
|         return new Promise(function (ok, fail) { return tslib_1.__awaiter(_this, void 0, void 0, function () { | 
|             var databaseConnection, queryStartTime; | 
|             var _this = this; | 
|             return tslib_1.__generator(this, function (_a) { | 
|                 switch (_a.label) { | 
|                     case 0: return [4 /*yield*/, this.connect()]; | 
|                     case 1: | 
|                         databaseConnection = _a.sent(); | 
|                         this.driver.connection.logger.logQuery(query, parameters, this); | 
|                         queryStartTime = +new Date(); | 
|                         databaseConnection.executeSql(query, parameters, function (result) { | 
|                             // log slow queries if maxQueryExecution time is set | 
|                             var maxQueryExecutionTime = _this.driver.connection.options.maxQueryExecutionTime; | 
|                             var queryEndTime = +new Date(); | 
|                             var queryExecutionTime = queryEndTime - queryStartTime; | 
|                             if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime) | 
|                                 _this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, _this); | 
|                             if (query.substr(0, 11) === "INSERT INTO") { | 
|                                 ok(result.insertId); | 
|                             } | 
|                             else { | 
|                                 var resultSet = []; | 
|                                 for (var i = 0; i < result.rows.length; i++) { | 
|                                     resultSet.push(result.rows.item(i)); | 
|                                 } | 
|                                 ok(resultSet); | 
|                             } | 
|                         }, function (err) { | 
|                             _this.driver.connection.logger.logQueryError(err, query, parameters, _this); | 
|                             fail(new QueryFailedError(query, parameters, err)); | 
|                         }); | 
|                         return [2 /*return*/]; | 
|                 } | 
|             }); | 
|         }); }); | 
|     }; | 
|     /** | 
|      * Insert a new row with given values into the given table. | 
|      * Returns value of the generated column if given and generate column exist in the table. | 
|      // todo: implement new syntax | 
|     async insert(tableName: string, keyValues: ObjectLiteral): Promise<InsertResult> { | 
|         const keys = Object.keys(keyValues); | 
|         const columns = keys.map(key => `"${key}"`).join(", "); | 
|         const values = keys.map(key => "?").join(","); | 
|         const generatedColumns = this.connection.hasMetadata(tableName) ? this.connection.getMetadata(tableName).generatedColumns : []; | 
|         const sql = columns.length > 0 ? (`INSERT INTO "${tableName}"(${columns}) VALUES (${values})`) : `INSERT INTO "${tableName}" DEFAULT VALUES`; | 
|         const parameters = keys.map(key => keyValues[key]); | 
|   | 
|         return new Promise<InsertResult>(async (ok, fail) => { | 
|             this.driver.connection.logger.logQuery(sql, parameters, this); | 
|             const __this = this; | 
|             const databaseConnection = await this.connect(); | 
|             databaseConnection.executeSql(sql, parameters, (resultSet: any) => { | 
|                 const generatedMap = generatedColumns.reduce((map, generatedColumn) => { | 
|                     const value = generatedColumn.isPrimary && generatedColumn.generationStrategy === "increment" && resultSet.insertId ? resultSet.insertId : keyValues[generatedColumn.databaseName]; | 
|                     if (!value) return map; | 
|                     return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value)); | 
|                 }, {} as ObjectLiteral); | 
|   | 
|                 ok({ | 
|                     result: undefined, | 
|                     generatedMap: Object.keys(generatedMap).length > 0 ? generatedMap : undefined | 
|                 }); | 
|             }, (err: any) => { | 
|                 __this.driver.connection.logger.logQueryError(err, sql, parameters, this); | 
|                 fail(err); | 
|             }); | 
|         }); | 
|     }*/ | 
|     // ------------------------------------------------------------------------- | 
|     // Protected Methods | 
|     // ------------------------------------------------------------------------- | 
|     /** | 
|      * Parametrizes given object of values. Used to create column=value queries. | 
|      */ | 
|     CordovaQueryRunner.prototype.parametrize = function (objectLiteral, startIndex) { | 
|         if (startIndex === void 0) { startIndex = 0; } | 
|         return Object.keys(objectLiteral).map(function (key, index) { return "\"" + key + "\"" + "=?"; }); | 
|     }; | 
|     return CordovaQueryRunner; | 
| }(AbstractSqliteQueryRunner)); | 
| export { CordovaQueryRunner }; | 
|   | 
| //# sourceMappingURL=CordovaQueryRunner.js.map |