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
JavaScript
;
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;