40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
// backend/db/sql.js
|
|
const sql = require('mssql');
|
|
|
|
const config = {
|
|
server: process.env.SQL_HOST,
|
|
port: parseInt(process.env.SQL_PORT),
|
|
user: process.env.SQL_USER,
|
|
password: process.env.SQL_PASSWORD,
|
|
database: process.env.SQL_DATABASE,
|
|
options: {
|
|
encrypt: true,
|
|
trustServerCertificate: true,
|
|
},
|
|
};
|
|
|
|
let pool = null;
|
|
|
|
async function getConnection() {
|
|
if (pool) return pool;
|
|
pool = await sql.connect(config);
|
|
console.log('✅ Connected to SAP SQL Server');
|
|
return pool;
|
|
}
|
|
|
|
async function query(sqlQuery, params = []) {
|
|
const conn = await getConnection();
|
|
const request = conn.request();
|
|
// Assuming params is an array of values, but mssql uses named params or input()
|
|
// For simplicity, if params are positional, need to adjust
|
|
// But in current code, params are passed as array, so perhaps use input with placeholders
|
|
// For now, assume sqlQuery has ? and params array
|
|
params.forEach((param, index) => {
|
|
request.input(`param${index}`, param);
|
|
});
|
|
const result = await request.query(sqlQuery.replace(/\?/g, (match, offset) => `@param${offset}`));
|
|
return result.recordset;
|
|
}
|
|
|
|
module.exports = { getConnection, query };
|