import sql from "mssql"; import {prodSqlConfig} from "./utils/prodServerConfig.js"; import {createLog} from "../logger/logger.js"; import {db} from "../../../database/dbclient.js"; import {settings} from "../../../database/schema/settings.js"; import {eq} from "drizzle-orm"; let pool: any; let connected: boolean = false; export const initializeProdPool = async () => { if (connected) return {success: false, message: "There is already a connection."}; try { const config = await prodSqlConfig(); pool = await sql.connect(config!); createLog("info", "lst", "sqlProd", `Connected to ${config?.server}, and looking at ${config?.database}`); connected = true; return {success: true, message: "The sql server connection has been closed"}; } catch (error) { createLog("error", "lst", "sqlProd", `${JSON.stringify(error)}, "There was an error connecting to the pool."`); throw new Error("There was an error closing the sql connection"); } }; export const closePool = async () => { try { await pool.close(); createLog("info", "lst", "sqlProd", "Connection pool closed"); connected = false; return {success: true, message: "The sql server connection has been closed"}; } catch (error) { createLog( "error", "lst", "sqlProd", `${JSON.stringify(error)}, "There was an error closing the sql connection"` ); throw new Error("There was an error closing the sql connection"); } }; export async function query(queryToRun: string, name: string) { const plantToken = await db.select().from(settings).where(eq(settings.name, "plantToken")); const query = queryToRun.replaceAll("test1", plantToken[0].value); try { const result = await pool.request().query(query); return result.recordset; } catch (error: any) { if (error.code === "ETIMEOUT") { createLog("error", "lst", "sqlProd", `${JSON.stringify(error)}, ${name} did not run due to a timeout.`); throw new Error(`${name} query did not run due to a timeout.`); } if (error.code === "EREQUEST") { throw new Error(`${name} encoutnered an error ${error.originalError.info.message}`); } //console.log(error.originalError.info.message); //EREQUEST //throw new Error(`${name} encoutnered an error ${error.code}`); } }