cangku/backend/src/config/middlePlatformDatabase.js

52 lines
1.2 KiB
JavaScript

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,
};