UNPKG

@bitblit/ratchet-rdbms

Version:

Ratchet tooling for working with relational databases

73 lines 2.39 kB
import { Logger } from '@bitblit/ratchet-common/logger/logger'; import SqlString from 'sqlstring'; import { NamedParameterAdapter } from "../util/named-parameter-adapter/named-parameter-adapter.js"; export class PostgresStyleDatabaseAccess { _connection; _connectionOptions; constructor(_connection, _connectionOptions) { this._connection = _connection; this._connectionOptions = _connectionOptions; } async testConnection(logTestResults) { if (logTestResults) { Logger.info('Running connection test'); } const res = await this.query(this.testConnectionQueryString(), {}); const rows = res.results; const timestamp = rows.length === 1 ? rows[0].test : null; if (logTestResults) { Logger.info('Test returned : %j', timestamp); } return timestamp; } getRawDatabase() { return this._connection; } getRawDatabaseConfig() { return this._connectionOptions; } testConnectionQueryString() { return 'SELECT 1 AS test'; } async close() { return Promise.resolve(false); } escape(query) { return SqlString.escape(query); } async preQuery() { } async query(query, fields) { const qap = NamedParameterAdapter.applyNamedValuesToQuery({ query: query, params: fields }); const formatted = SqlString.format(qap.query, {}); const res = await this._connection.query(formatted); const rval = { results: res.rows, fields: res.fields }; return rval; } async modify(query, fields) { const qap = NamedParameterAdapter.applyNamedValuesToQuery({ query: query, params: fields }); const formatted = SqlString.format(qap.query, {}); const res = await this._connection.query(formatted); let insertId = null; if (res?.rows?.length) { const r = res.rows[0]; const keyName = Object.keys(r)[0]; insertId = r[keyName]; } const mr = { changedRows: res.rowCount, insertId: insertId }; const rval = { results: mr, fields: null }; return rval; } async onRequestSuccessOrFailure(_type) { } } //# sourceMappingURL=postgres-style-database-access.js.map