Genesis
This commit is contained in:
49
src/db.js
Normal file
49
src/db.js
Normal file
@@ -0,0 +1,49 @@
|
||||
import sql from 'mssql';
|
||||
import 'dotenv/config';
|
||||
|
||||
const config = {
|
||||
server: process.env.MSSQL_SERVER || 'localhost',
|
||||
port: Number(process.env.MSSQL_PORT) || 1433,
|
||||
database: process.env.MSSQL_DATABASE || 'eazybusiness',
|
||||
user: process.env.MSSQL_USER,
|
||||
password: process.env.MSSQL_PASSWORD,
|
||||
options: {
|
||||
encrypt: process.env.MSSQL_ENCRYPT !== 'false',
|
||||
trustServerCertificate: process.env.MSSQL_TRUST_SERVER_CERTIFICATE !== 'false',
|
||||
},
|
||||
};
|
||||
|
||||
/** @type {sql.ConnectionPool | null} */
|
||||
let pool = null;
|
||||
|
||||
export function getPool() {
|
||||
if (!pool) {
|
||||
throw new Error('MSSQL pool is not connected. Call connectDb() first.');
|
||||
}
|
||||
return pool;
|
||||
}
|
||||
|
||||
export async function connectDb() {
|
||||
if (pool) {
|
||||
return pool;
|
||||
}
|
||||
|
||||
if (!config.user) {
|
||||
throw new Error('MSSQL_USER is not set in environment');
|
||||
}
|
||||
|
||||
pool = await sql.connect(config);
|
||||
return pool;
|
||||
}
|
||||
|
||||
export async function closeDb() {
|
||||
if (pool) {
|
||||
await pool.close();
|
||||
pool = null;
|
||||
}
|
||||
}
|
||||
|
||||
export async function pingDb() {
|
||||
const result = await getPool().request().query('SELECT 1 AS ok');
|
||||
return result.recordset[0]?.ok === 1;
|
||||
}
|
||||
Reference in New Issue
Block a user