UNPKG

lupdo

Version:

Database Abstraction Layer for Node js

71 lines (70 loc) 2.13 kB
import { v4 as uuidv4 } from 'uuid'; import PdoError from './errors/pdo-error'; export class Pdo { static setLogger(logger) { Pdo.logger = logger; } static getAvailableDrivers() { return Object.keys(Pdo.availableDrivers); } static addDriver(driverName, driver) { if (!(driverName in Pdo.availableDrivers)) { Pdo.availableDrivers[driverName] = driver; } } constructor(driverName, options, poolOptions = {}, attributes = {}) { this.driverName = driverName; if (!(driverName in Pdo.availableDrivers)) { throw new PdoError(`Driver [${driverName}] not available.`); } this.driver = new Pdo.availableDrivers[driverName](driverName, options, poolOptions, attributes); this.driver.on('log', (level, message) => { Pdo.logger(level, message); }); this.uuid = uuidv4(); } async beginTransaction() { const transaction = await this.driver.beginTransaction(); return transaction; } async disconnect() { await this.driver.disconnect(); } reconnect() { this.driver.reconnect(); } async exec(sql) { return await this.driver.exec(sql); } async prepare(sql) { const statement = await this.driver.prepare(sql); return statement; } async query(sql) { const statement = await this.driver.query(sql); return statement; } async getRawPoolConnection() { return await this.driver.getRawPoolConnection(); } async getRawDriverConnection() { return await this.driver.getRawDriverConnection(); } async getVersion() { if (this.version === undefined) { this.version = await this.driver.getVersion(); } return this.version; } getAttribute(attribute) { return this.driver.getAttribute(attribute); } setAttribute(attribute, value) { return this.driver.setAttribute(attribute, value); } } Pdo.logger = () => { return void 0; }; Pdo.availableDrivers = {}; export default Pdo;