Files
InstallerRobot/web-server/src/db.js
2026-05-20 14:10:25 +07:00

50 lines
1.1 KiB
JavaScript

const sql = require('mssql');
let poolPromise;
function boolFromEnv(value, fallback) {
if (value === undefined || value === null || value === '') return fallback;
return ['1', 'true', 'yes'].includes(String(value).toLowerCase());
}
function getConfig() {
return {
server: process.env.SQLSERVER_HOST || 'localhost',
port: Number(process.env.SQLSERVER_PORT || 1433),
database: process.env.SQLSERVER_DATABASE || 'RobotInstaller',
user: process.env.SQLSERVER_USER,
password: process.env.SQLSERVER_PASSWORD,
options: {
encrypt: boolFromEnv(process.env.SQLSERVER_ENCRYPT, false),
trustServerCertificate: boolFromEnv(process.env.SQLSERVER_TRUST_SERVER_CERTIFICATE, true)
},
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
}
};
}
async function getPool() {
if (!poolPromise) {
poolPromise = sql.connect(getConfig());
}
return poolPromise;
}
async function closePool() {
if (!poolPromise) return;
const pool = await poolPromise;
await pool.close();
poolPromise = undefined;
}
module.exports = {
sql,
getPool,
closePool
};