UNPKG

@manzoomeh/basicore.server

Version:

java script version of Manzoomeh Negaran http web server for nodejs

75 lines (69 loc) 2 kB
import HostService from "./hostService.js"; import Request from "../models/request.js"; import Response from "../models/response.js"; import sql from "mssql"; export default class SqlProxyHostService extends HostService { /** @type {string} */ #connectionString; /** * @param {string} name * @param {string} connectionString */ constructor(name, connectionString) { super(name); this.#connectionString = connectionString; } /** * @param {Request} request * @returns {sql.Table} */ _convertToTable(request) { const retVal = new sql.Table(); retVal.columns.add("ParamType", sql.VarChar(50)); retVal.columns.add("ParamName", sql.VarChar(100)); retVal.columns.add("ParamValue", sql.VarChar); for (const type in request) { const group = request[type]; for (const name in group) { if (name === "query") { const query = group[name]; for (const key in query) { retVal.rows.add(name, key, query[key].toString()); } } else { retVal.rows.add(type, name, group[name].toString()); } } } return retVal; } /** * @param {Request} request * @returns {Promise<Response>} */ async processAsync(request) { try { const params = this._convertToTable(request); const pool = await sql.connect(this.#connectionString); const data = await pool .request() .input("params", params) .execute("[dbo].[cms]"); const closeTask = pool.close(); const result = {}; data.recordset.forEach((row) => { if (!result[row.ParamType]) { result[row.ParamType] = {}; } result[row.ParamType][row.ParamName] = row.ParamValue; }); await closeTask; return this._createResponse({ cms: result, }); } catch (er) { console.error(er); throw er; } } }