@bitblit/ratchet-rdbms
Version:
Ratchet tooling for working with relational databases
57 lines • 1.8 kB
JavaScript
import { Logger } from '@bitblit/ratchet-common/logger/logger';
export class MysqlStyleDatabaseAccess {
_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('SELECT UNIX_TIMESTAMP(now())*1000 AS test', {});
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 UNIX_TIMESTAMP(now())*1000 AS test';
}
async close() {
return Promise.resolve(false);
}
escape(query) {
return this._connection.escape(query);
}
async preQuery() {
this._connection.config.namedPlaceholders = true;
}
async query(query, fields) {
const [rows, outFields] = await this._connection.query(query, fields);
const castRows = rows;
const castFields = outFields;
const rval = {
results: castRows,
fields: castFields,
};
return rval;
}
async modify(query, fields) {
const tmp = await this.query(query, fields);
return tmp;
}
async onRequestSuccessOrFailure(_type) {
this._connection.config.namedPlaceholders = false;
}
}
//# sourceMappingURL=mysql-style-database-access.js.map