UNPKG

lupdo

Version:

Database Abstraction Layer for Node js

75 lines (74 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Pdo = void 0; const uuid_1 = require("uuid"); const pdo_error_1 = require("./errors/pdo-error"); 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 pdo_error_1.default(`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 = (0, uuid_1.v4)(); } 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); } } exports.Pdo = Pdo; Pdo.logger = () => { return void 0; }; Pdo.availableDrivers = {}; exports.default = Pdo;