@dazejs/framework
Version:
Daze.js - A powerful web framework for Node.js
64 lines • 2.4 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Database = void 0;
const illegal_argument_error_1 = require("../../errors/illegal-argument-error");
const manager_1 = require("./manager");
const mysql_connector_1 = require("./connector/mysql-connector");
class Database {
constructor(app) {
this.managers = new Map();
this.app = app;
return new Proxy(this, this.proxy);
}
get proxy() {
return {
get(target, p, receiver) {
if (typeof p === 'string') {
if (Reflect.has(target, p)) {
return Reflect.get(target, p, receiver);
}
return target.connection()[p];
}
return Reflect.get(target, p, receiver);
}
};
}
close(name = 'default') {
var _a;
if (this.managers.has(name)) {
(_a = this.managers.get(name)) === null || _a === void 0 ? void 0 : _a.close();
}
}
connection(name = 'default') {
if (!this.managers.has(name)) {
const config = this.getConnectioncConfigure(name);
this.managers.set(name, this.createConnection(config));
}
return this.managers.get(name);
}
createConnection(config) {
const { type } = config, restConfig = __rest(config, ["type"]);
switch (type) {
case 'mysql':
const pool = (new mysql_connector_1.MysqlConnector()).connect(restConfig);
return new manager_1.MysqlManager(pool);
}
throw new illegal_argument_error_1.IllegalArgumentError(`Unsupported database type [${config.type}]`);
}
getConnectioncConfigure(name) {
return this.app.get('config').get(`database.${name}`);
}
}
exports.Database = Database;
//# sourceMappingURL=database.js.map