@dazejs/framework
Version:
Daze.js - A powerful web framework for Node.js
73 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MysqlManager = void 0;
const parser_1 = require("../parser");
const manager_1 = require("./manager");
const actuator_1 = require("../actuator");
const builder_1 = require("../builder");
class MysqlManager extends manager_1.Manager {
constructor(pool) {
super();
this.pool = pool;
this.actuator = this.getDefaultActuator();
this.parser = this.getDefaultParser();
}
close() {
this.pool.end();
}
getDefaultParser() {
return new parser_1.MysqlParser();
}
getDefaultActuator() {
return new actuator_1.MysqlActuator(this.pool);
}
getTransactionActuator(connection) {
return new actuator_1.MysqlTransactionActuator(connection);
}
table(table, as) {
return (new builder_1.Builder(this.actuator, this.parser)).table(table, as);
}
beginTransaction() {
return new Promise((resolve, reject) => {
this.pool.getConnection((err, connection) => {
if (err)
return reject(err);
const actuator = this.getTransactionActuator(connection);
const builder = new builder_1.Builder(actuator, this.parser);
connection.beginTransaction((error) => {
if (error)
return reject(error);
resolve(builder);
});
});
});
}
async transaction(callback) {
const conn = await this.beginTransaction();
try {
await callback(conn);
await conn.commit();
}
catch (err) {
await conn.rollback();
throw err;
}
}
async query(query, bindings = []) {
return this.actuator.query(query, bindings);
}
async select(query, bindings = []) {
return this.query(query, bindings);
}
async insert(query, bindings = []) {
return this.query(query, bindings).then((result) => result.insertId);
}
async update(query, bindings = []) {
return this.query(query, bindings).then((result) => result.affectedRows);
}
async delete(query, bindings = []) {
return this.query(query, bindings).then((result) => result.affectedRows);
}
}
exports.MysqlManager = MysqlManager;
//# sourceMappingURL=mysql-manager.js.map