feat(sqlserver): added in the sqlconnnection

This commit is contained in:
2025-03-07 13:38:14 -06:00
parent c74f8e2a5f
commit a1c9ad65b8
6 changed files with 767 additions and 4 deletions

View File

@@ -0,0 +1,63 @@
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}`);
}
}

View File

@@ -0,0 +1,19 @@
import {OpenAPIHono} from "@hono/zod-openapi";
import {initializeProdPool} from "./prodSqlServer.js";
import closeConnection from "./route/closeProdSql.js";
import connect from "./route/startProdSql.js";
import restart from "./route/restartProdSql.js";
const app = new OpenAPIHono();
// intially start the pool up.
setTimeout(() => {
initializeProdPool();
}, 5000);
app.route("/sqlprod/connect", connect);
app.route("/sqlprod/close", closeConnection);
app.route("/sqlprod/restart", restart);
export default app;