@bitblit/ratchet-rdbms
Version:
Ratchet tooling for working with relational databases
73 lines • 2.39 kB
JavaScript
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