const sql = require('mssql'); let pool = null; function getConfig() { return { server: process.env.CLOUD_DB_HOST, port: Number(process.env.CLOUD_DB_PORT || 1433), database: process.env.CLOUD_DB_NAME, user: process.env.CLOUD_DB_USER, password: process.env.CLOUD_DB_PASSWORD, options: { encrypt: String(process.env.CLOUD_DB_SSL || '').toLowerCase() === 'true', trustServerCertificate: true, }, pool: { max: 6, min: 0, idleTimeoutMillis: 60000, }, connectionTimeout: 10000, requestTimeout: 60000, }; } async function getPool() { if (pool?.connected) return pool; if (pool) { await pool.close().catch(() => {}); } pool = await new sql.ConnectionPool(getConfig()).connect(); return pool; } async function query(sqlText, params = {}) { const activePool = await getPool(); const request = activePool.request(); Object.entries(params).forEach(([key, value]) => request.input(key, value)); const result = await request.query(sqlText); return result.recordset || []; } async function close() { if (pool) await pool.close().catch(() => {}); pool = null; } module.exports = { query, close, };