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.

332 lines (331 loc) 15.1 kB
"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;