import * as sql from 'mssql'; import { config } from '../operations/config'; import { log } from '../operations/log'; export interface QueryResult { status: number; message: string; data: any[] | null; } /** * Executes a raw SQL query with optional parameterized inputs. * * @param query - The SQL query to execute. Use @paramName for parameterized values. * @param inputs - Optional key/value map of parameter names to values * @returns Promise */ export const Query = async (query: string, inputs?: Record): Promise => { try { const request = new sql.Request(); if (inputs) { for (const key in inputs) { request.input(key, inputs[key]); } } const result = await request.query(query); return { status: 200, message: 'Success', data: result.recordset || null }; } catch (err) { if (config.get.logingMode()) { log('Query', null, `${query} : ${err instanceof Error ? err.message : String(err)}`); } return { status: 500, message: String(err), data: null }; } };