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.
332 lines (331 loc) • 15.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InterceptorQueryRunner = void 0;
const ChainedQueryRunner_1 = require("./ChainedQueryRunner");
class InterceptorQueryRunner extends ChainedQueryRunner_1.ChainedQueryRunner {
constructor(queryRunner) {
super(queryRunner);
}
executeSelectOneRow(query, params = []) {
const playload = this.onQuery('selectOneRow', query, params);
return this.queryRunner.executeSelectOneRow(query, params).then(r => {
this.onQueryResult('selectOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('selectOneRow', query, params, e, playload);
throw e;
});
}
executeSelectManyRows(query, params = []) {
const playload = this.onQuery('selectManyRows', query, params);
return this.queryRunner.executeSelectManyRows(query, params).then(r => {
this.onQueryResult('selectManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('selectManyRows', query, params, e, playload);
throw e;
});
}
executeSelectOneColumnOneRow(query, params = []) {
const playload = this.onQuery('selectOneColumnOneRow', query, params);
return this.queryRunner.executeSelectOneColumnOneRow(query, params).then(r => {
this.onQueryResult('selectOneColumnOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('selectOneColumnOneRow', query, params, e, playload);
throw e;
});
}
executeSelectOneColumnManyRows(query, params = []) {
const playload = this.onQuery('selectOneColumnManyRows', query, params);
return this.queryRunner.executeSelectOneColumnManyRows(query, params).then(r => {
this.onQueryResult('selectOneColumnManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('selectOneColumnManyRows', query, params, e, playload);
throw e;
});
}
executeInsert(query, params = []) {
const playload = this.onQuery('insert', query, params);
return this.queryRunner.executeInsert(query, params).then(r => {
this.onQueryResult('insert', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insert', query, params, e, playload);
throw e;
});
}
executeInsertReturningLastInsertedId(query, params = []) {
const playload = this.onQuery('insertReturningLastInsertedId', query, params);
return this.queryRunner.executeInsertReturningLastInsertedId(query, params).then(r => {
this.onQueryResult('insertReturningLastInsertedId', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insertReturningLastInsertedId', query, params, e, playload);
throw e;
});
}
executeInsertReturningMultipleLastInsertedId(query, params = []) {
const playload = this.onQuery('insertReturningMultipleLastInsertedId', query, params);
return this.queryRunner.executeInsertReturningMultipleLastInsertedId(query, params).then(r => {
this.onQueryResult('insertReturningMultipleLastInsertedId', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insertReturningMultipleLastInsertedId', query, params, e, playload);
throw e;
});
}
executeInsertReturningOneRow(query, params = []) {
const playload = this.onQuery('insertReturningOneRow', query, params);
return this.queryRunner.executeInsertReturningOneRow(query, params).then(r => {
this.onQueryResult('insertReturningOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insertReturningOneRow', query, params, e, playload);
throw e;
});
}
executeInsertReturningManyRows(query, params = []) {
const playload = this.onQuery('insertReturningManyRows', query, params);
return this.queryRunner.executeInsertReturningManyRows(query, params).then(r => {
this.onQueryResult('insertReturningManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insertReturningManyRows', query, params, e, playload);
throw e;
});
}
executeInsertReturningOneColumnOneRow(query, params = []) {
const playload = this.onQuery('insertReturningOneColumnOneRow', query, params);
return this.queryRunner.executeInsertReturningOneColumnOneRow(query, params).then(r => {
this.onQueryResult('insertReturningOneColumnOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insertReturningOneColumnOneRow', query, params, e, playload);
throw e;
});
}
executeInsertReturningOneColumnManyRows(query, params = []) {
const playload = this.onQuery('insertReturningOneColumnManyRows', query, params);
return this.queryRunner.executeInsertReturningOneColumnManyRows(query, params).then(r => {
this.onQueryResult('insertReturningOneColumnManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('insertReturningOneColumnManyRows', query, params, e, playload);
throw e;
});
}
executeUpdate(query, params = []) {
const playload = this.onQuery('update', query, params);
return this.queryRunner.executeUpdate(query, params).then(r => {
this.onQueryResult('update', query, params, r, playload);
return r;
}, e => {
this.onQueryError('update', query, params, e, playload);
throw e;
});
}
executeUpdateReturningOneRow(query, params = []) {
const playload = this.onQuery('updateReturningOneRow', query, params);
return this.queryRunner.executeUpdateReturningOneRow(query, params).then(r => {
this.onQueryResult('updateReturningOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('updateReturningOneRow', query, params, e, playload);
throw e;
});
}
executeUpdateReturningManyRows(query, params = []) {
const playload = this.onQuery('updateReturningManyRows', query, params);
return this.queryRunner.executeUpdateReturningManyRows(query, params).then(r => {
this.onQueryResult('updateReturningManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('updateReturningManyRows', query, params, e, playload);
throw e;
});
}
executeUpdateReturningOneColumnOneRow(query, params = []) {
const playload = this.onQuery('updateReturningOneColumnOneRow', query, params);
return this.queryRunner.executeUpdateReturningOneColumnOneRow(query, params).then(r => {
this.onQueryResult('updateReturningOneColumnOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('updateReturningOneColumnOneRow', query, params, e, playload);
throw e;
});
}
executeUpdateReturningOneColumnManyRows(query, params = []) {
const playload = this.onQuery('updateReturningOneColumnManyRows', query, params);
return this.queryRunner.executeUpdateReturningOneColumnManyRows(query, params).then(r => {
this.onQueryResult('updateReturningOneColumnManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('updateReturningOneColumnManyRows', query, params, e, playload);
throw e;
});
}
executeDelete(query, params = []) {
const playload = this.onQuery('delete', query, params);
return this.queryRunner.executeDelete(query, params).then(r => {
this.onQueryResult('delete', query, params, r, playload);
return r;
}, e => {
this.onQueryError('delete', query, params, e, playload);
throw e;
});
}
executeDeleteReturningOneRow(query, params = []) {
const playload = this.onQuery('deleteReturningOneRow', query, params);
return this.queryRunner.executeDeleteReturningOneRow(query, params).then(r => {
this.onQueryResult('deleteReturningOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('deleteReturningOneRow', query, params, e, playload);
throw e;
});
}
executeDeleteReturningManyRows(query, params = []) {
const playload = this.onQuery('deleteReturningManyRows', query, params);
return this.queryRunner.executeDeleteReturningManyRows(query, params).then(r => {
this.onQueryResult('deleteReturningManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('deleteReturningManyRows', query, params, e, playload);
throw e;
});
}
executeDeleteReturningOneColumnOneRow(query, params = []) {
const playload = this.onQuery('deleteReturningOneColumnOneRow', query, params);
return this.queryRunner.executeDeleteReturningOneColumnOneRow(query, params).then(r => {
this.onQueryResult('deleteReturningOneColumnOneRow', query, params, r, playload);
return r;
}, e => {
this.onQueryError('deleteReturningOneColumnOneRow', query, params, e, playload);
throw e;
});
}
executeDeleteReturningOneColumnManyRows(query, params = []) {
const playload = this.onQuery('deleteReturningOneColumnManyRows', query, params);
return this.queryRunner.executeDeleteReturningOneColumnManyRows(query, params).then(r => {
this.onQueryResult('deleteReturningOneColumnManyRows', query, params, r, playload);
return r;
}, e => {
this.onQueryError('deleteReturningOneColumnManyRows', query, params, e, playload);
throw e;
});
}
executeProcedure(query, params = []) {
const playload = this.onQuery('executeProcedure', query, params);
return this.queryRunner.executeProcedure(query, params).then(r => {
this.onQueryResult('executeProcedure', query, params, r, playload);
return r;
}, e => {
this.onQueryError('executeProcedure', query, params, e, playload);
throw e;
});
}
executeFunction(query, params = []) {
const playload = this.onQuery('executeFunction', query, params);
return this.queryRunner.executeFunction(query, params).then(r => {
this.onQueryResult('executeFunction', query, params, r, playload);
return r;
}, e => {
this.onQueryError('executeFunction', query, params, e, playload);
throw e;
});
}
executeInTransaction(fn, outermostQueryRunner) {
if (!this.queryRunner.lowLevelTransactionManagementSupported()) {
// Emulate beginTransaction, commit and rollback to see in logs
return this.queryRunner.executeInTransaction(() => {
const query = '';
const params = [];
const playload = this.onQuery('beginTransaction', query, params);
this.onQueryResult('beginTransaction', query, params, undefined, playload);
return fn();
}, outermostQueryRunner).then((r) => {
try {
const query = '';
const params = [];
const playload = this.onQuery('commit', query, params);
this.onQueryResult('commit', query, params, r, playload);
}
catch {
// Keep same behaviour of the transaction
}
return r;
}, (e) => {
try {
const query = '';
const params = [];
const playload = this.onQuery('rollback', query, params);
this.onQueryResult('rollback', query, params, undefined, playload);
}
catch {
// Throw the innermost error
}
throw e;
});
}
return this.queryRunner.executeInTransaction(fn, outermostQueryRunner);
}
executeBeginTransaction() {
const query = '';
const params = [];
const playload = this.onQuery('beginTransaction', query, params);
return this.queryRunner.executeBeginTransaction().then(r => {
this.onQueryResult('beginTransaction', query, params, r, playload);
return r;
}, e => {
this.onQueryError('beginTransaction', query, params, e, playload);
throw e;
});
}
executeCommit() {
const query = '';
const params = [];
const playload = this.onQuery('commit', query, params);
return this.queryRunner.executeCommit().then(r => {
this.onQueryResult('commit', query, params, r, playload);
return r;
}, e => {
this.onQueryError('commit', query, params, e, playload);
throw e;
});
}
executeRollback() {
const query = '';
const params = [];
const playload = this.onQuery('rollback', query, params);
return this.queryRunner.executeRollback().then(r => {
this.onQueryResult('rollback', query, params, r, playload);
return r;
}, e => {
this.onQueryError('rollback', query, params, e, playload);
throw e;
});
}
executeDatabaseSchemaModification(query, params = []) {
const playload = this.onQuery('executeDatabaseSchemaModification', query, params);
return this.queryRunner.executeDatabaseSchemaModification(query, params).then(r => {
this.onQueryResult('executeDatabaseSchemaModification', query, params, r, playload);
return r;
}, e => {
this.onQueryError('executeDatabaseSchemaModification', query, params, e, playload);
throw e;
});
}
executeConnectionConfiguration(query, params = []) {
const playload = this.onQuery('executeConnectionConfiguration', query, params);
return this.queryRunner.executeConnectionConfiguration(query, params).then(r => {
this.onQueryResult('executeConnectionConfiguration', query, params, r, playload);
return r;
}, e => {
this.onQueryError('executeConnectionConfiguration', query, params, e, playload);
throw e;
});
}
}
exports.InterceptorQueryRunner = InterceptorQueryRunner;