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.

93 lines (92 loc) 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnyDBPoolQueryRunner = void 0; const PromiseBasedPoolQueryRunner_1 = require("./PromiseBasedPoolQueryRunner"); const AnyDBQueryRunner_1 = require("./AnyDBQueryRunner"); /** * @deprecated */ class AnyDBPoolQueryRunner extends PromiseBasedPoolQueryRunner_1.PromiseBasedPoolQueryRunner { constructor(pool) { super(); this.pool = pool; switch (this.pool.adapter.name) { case 'mssql': this.database = 'sqlServer'; break; case 'mysql': this.database = 'mySql'; break; case 'postgres': this.database = 'postgreSql'; break; case 'sqlite3': this.database = 'sqlite'; break; default: throw new Error('Unknown any-db adapter of name ' + this.pool.adapter.name); } } useDatabase(database) { if (database !== this.database) { if (this.database === 'mySql' && database === 'mariaDB') { // @ts-ignore this.database = database; } else if (this.database === 'mariaDB' && database === 'mySql') { // @ts-ignore this.database = database; } else if (this.database === 'mySql' || this.database === 'mariaDB') { throw new Error('Unsupported database: ' + database + '. The current connection used in AnyDBQueryRunner only supports mySql or mariaDB databases'); } else { throw new Error('Unsupported database: ' + database + '. The current connection used in AnyDBQueryRunner only supports ' + this.database + ' databases'); } } } getNativeRunner() { return this.pool; } getCurrentNativeTransaction() { return super.getCurrentNativeTransaction(); } addParam(params, value) { const index = params.length; let result; switch (this.pool.adapter.name) { case 'mssql': result = '@' + index; break; case 'mysql': result = '?'; break; case 'postgres': result = '$' + (index + 1); break; case 'sqlite3': result = '?'; break; default: throw new Error('Unknown any-db adapter of name ' + this.pool.adapter.name); } params.push(value); return result; } createQueryRunner() { return new Promise((resolve, reject) => { this.pool.acquire((error, anyDBConnection) => { if (error) { reject(error); } else { resolve(new AnyDBQueryRunner_1.AnyDBQueryRunner(anyDBConnection)); } }); }); } releaseQueryRunner(queryRunner) { this.pool.release(queryRunner.getNativeRunner()); } } exports.AnyDBPoolQueryRunner = AnyDBPoolQueryRunner;