50 lines
1.1 KiB
JavaScript
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
|
|
};
|