import { ObjectLiteral } from "../../common/ObjectLiteral"; import { AbstractSqliteQueryRunner } from "../sqlite-abstract/AbstractSqliteQueryRunner"; import { CordovaDriver } from "./CordovaDriver"; /** * Runs queries on a single sqlite database connection. */ export declare class CordovaQueryRunner extends AbstractSqliteQueryRunner { /** * Database driver used by connection. */ driver: CordovaDriver; constructor(driver: CordovaDriver); /** * Called before migrations are run. */ beforeMigration(): Promise; /** * Called after migrations are run. */ afterMigration(): Promise; /** * Executes a given SQL query. */ query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise; /** * 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 { 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(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); }); }); }*/ /** * Would start a transaction but this driver does not support transactions. */ startTransaction(): Promise; /** * Would start a transaction but this driver does not support transactions. */ commitTransaction(): Promise; /** * Would start a transaction but this driver does not support transactions. */ rollbackTransaction(): Promise; /** * Removes all tables from the currently connected database. * Be careful with using this method and avoid using it in production or migrations * (because it can clear all your database). */ clearDatabase(): Promise; /** * Parametrizes given object of values. Used to create column=value queries. */ protected parametrize(objectLiteral: ObjectLiteral, startIndex?: number): string[]; }