UNPKG

@nivinjoseph/n-data

Version:

Data access library for Postgres based on Knex

45 lines (36 loc) 1.44 kB
import { Exception } from "@nivinjoseph/n-exception"; import { OperationType } from "./operation-type.js"; import { given } from "@nivinjoseph/n-defensive"; export class DbException extends Exception { private readonly _operation: string; private readonly _sql: string; private readonly _params: Array<any>; public get operation(): string { return this._operation; } public get sql(): string { return this._sql; } // eslint-disable-next-line @typescript-eslint/no-unsafe-return public get params(): ReadonlyArray<any> { return this._params; } public constructor(operationType: OperationType, sql: string, params: ReadonlyArray<any>, err?: Error) { given(operationType, "operationType").ensureHasValue(); given(sql, "sql").ensureHasValue(); given(params, "params").ensureHasValue(); const operation = operationType === OperationType.query ? "query" : "command"; let paramsString = null; try { paramsString = JSON.stringify(params); } catch { // deliberate suppress? } if (paramsString == null) paramsString = `[${params}]`; const message = `Error during ${operation} operation with sql "${sql}" and params ${paramsString}.`; super(message, err); this._operation = operation; this._sql = sql; this._params = [...params]; } }