UNPKG

ts-sql-query

Version:

Type-safe SQL query builder like QueryDSL or JOOQ in Java or Linq in .Net for TypeScript with MariaDB, MySql, Oracle, PostgreSql, Sqlite and SqlServer support.

71 lines (70 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BetterSqlite3QueryRunner = void 0; const SqlTransactionQueryRunner_1 = require("./SqlTransactionQueryRunner"); class BetterSqlite3QueryRunner extends SqlTransactionQueryRunner_1.SqlTransactionQueryRunner { constructor(connection, config) { super(); this.connection = connection; this.database = 'sqlite'; this.promise = config?.promise || Promise; } useDatabase(database) { if (database !== 'sqlite') { throw new Error('Unsupported database: ' + database + '. BetterSqlite3QueryRunner only supports sqlite databases'); } } getNativeRunner() { return this.connection; } getCurrentNativeTransaction() { return undefined; } execute(fn) { return fn(this.connection); } executeQueryReturning(query, params) { try { const rows = this.connection.prepare(query).safeIntegers(true).all(params); return this.promise.resolve(rows); } catch (e) { return this.promise.reject(e); } } executeMutation(query, params) { try { return this.promise.resolve(this.connection.prepare(query).run(params).changes); } catch (e) { return this.promise.reject(e); } } executeInsertReturningLastInsertedId(query, params = []) { if (this.containsInsertReturningClause(query, params)) { return super.executeInsertReturningLastInsertedId(query, params); } try { return this.promise.resolve(this.connection.prepare(query).safeIntegers(true).run(params).lastInsertRowid); } catch (e) { return this.promise.reject(e); } } addParam(params, value) { if (typeof value === 'boolean') { params.push(Number(value)); } else { params.push(value); } return '?'; } createResolvedPromise(result) { return this.promise.resolve(result); } createAllPromise(promises) { return this.promise.all(promises); } } exports.BetterSqlite3QueryRunner = BetterSqlite3QueryRunner;