lupdo
Version:
Database Abstraction Layer for Node js
75 lines (74 loc) • 2.26 kB
JavaScript
;
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;