radius-read
Version:
Realtime Dashboard
94 lines • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MySqlService = void 0;
const tslib_1 = require("tslib");
const MySql = tslib_1.__importStar(require("mysql2"));
const database_model_1 = require("../models/database.model");
/**
* DatabaseService is responsible for managing MySQL database connections and executing queries.
*/
class MySqlService {
/**
* Creates an instance of DatabaseService.
*/
constructor() { }
/**
* Initializes the DatabaseService with a MySQL connection or pool based on the provided configuration.
* @param config
*/
init(config) {
if (config.waitForConnections === false) {
Object.keys(config).forEach((key) => {
if (key !== 'host' || key !== 'user' || key !== 'password' || key !== 'database')
delete config[key];
});
this.connection = MySql.createConnection(config);
}
else {
this.connection = MySql.createPool(config);
}
}
;
/**
* Executes a MySQL query with the provided query string and optional parameters.
* @param query
* @param queryObjArray
* @returns
*/
executeQuery(query, queryObjArray = []) {
return new Promise((resolve) => {
var dbResult = new database_model_1.DbResult();
try {
this.connection.query(query, queryObjArray, (err, rows, metaData) => tslib_1.__awaiter(this, void 0, void 0, function* () {
if (rows) {
dbResult.Type = database_model_1.DbResultType.Success;
dbResult.Entities = rows;
}
/*if(metaData)
dbResult.MetaData = metaData;*/
if (err) {
var dbError = new database_model_1.DbError();
dbError.Code = err.code;
dbError.ErrNo = err.errno;
dbError.Message = err.sqlMessage;
dbError.Stack = err.stack;
dbResult.Type = database_model_1.DbResultType.Failed;
dbResult.Exception = dbError;
}
resolve(dbResult);
}));
}
catch (err) {
var dbError = new database_model_1.DbError();
dbError.Code = err.code;
dbError.ErrNo = err.errno;
dbError.Message = err.message;
dbError.Stack = err.stack;
dbResult.Type = database_model_1.DbResultType.Failed;
dbResult.Exception = dbError;
resolve(dbResult);
}
});
}
;
/**
* Parses a query string by replacing placeholders with values from the provided object.
* @param query
* @param queryObj
* @returns
*/
parsQuery(query, queryObj) {
if (query) {
const keys = Object.keys(queryObj);
keys === null || keys === void 0 ? void 0 : keys.forEach((key) => {
if (queryObj[key]) {
let regex = /\<@dest_db>/gi;
query = query.replace(regex, `destd${queryObj[key].toLowerCase()}`);
}
});
}
return query;
}
}
exports.MySqlService = MySqlService;
//# sourceMappingURL=mysql.service.js.map