UNPKG

radius-read

Version:

Realtime Dashboard

94 lines 3.47 kB
"use strict"; 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