You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.2 KiB
74 lines
2.2 KiB
import { Connection, ConnectionConfiguration, Request } from "tedious";
|
|
import 'dotenv/config'
|
|
|
|
const MSSQL_HOST = process.env.MSSQL_HOST || 'localhost'
|
|
const MSSQL_LOGIN = process.env.MSSQL_LOGIN || 'sa'
|
|
const MSSQL_PASSWORD = process.env.MSSQL_PASSWORD || ''
|
|
const MSSQL_DB = process.env.MSSQL_DB || 'nGeneral'
|
|
const MSSQL_PORT = Number(process.env.MSSQL_PORT) || 1433
|
|
|
|
const tediousConfig: ConnectionConfiguration = {
|
|
server: MSSQL_HOST,
|
|
options: {
|
|
trustServerCertificate: true,
|
|
port: MSSQL_PORT,
|
|
database: MSSQL_DB
|
|
},
|
|
authentication: {
|
|
type: 'default',
|
|
options: {
|
|
userName: MSSQL_LOGIN,
|
|
password: MSSQL_PASSWORD
|
|
}
|
|
}
|
|
}
|
|
|
|
export function tediousQuery(query: string) {
|
|
// Read all rows from table
|
|
return new Promise((resolve, reject) => {
|
|
const connection = new Connection(tediousConfig)
|
|
|
|
connection.on('connect', (err) => {
|
|
if (err) {
|
|
reject(err)
|
|
return
|
|
}
|
|
|
|
const result: any = [];
|
|
|
|
const request = new Request(
|
|
query,
|
|
(err, rowCount) => {
|
|
if (err) {
|
|
console.log(`Executing ${query}, ${rowCount} rows.`);
|
|
console.error(err.message);
|
|
} else {
|
|
console.log(`Executing ${query}, ${rowCount} rows.`);
|
|
}
|
|
}
|
|
)
|
|
|
|
request.on("row", (columns) => {
|
|
const entry: any = {};
|
|
columns.forEach((column: any) => {
|
|
entry[column.metadata.colName] = column.value;
|
|
});
|
|
result.push(entry);
|
|
});
|
|
|
|
request.on('error', error => reject(error));// some error happened, reject the promise
|
|
request.on('requestCompleted', () => {
|
|
connection.close();
|
|
resolve(result)
|
|
}); // resolve the promise with the result rows.
|
|
|
|
connection.execSql(request)
|
|
})
|
|
|
|
connection.on('error', (err) => {
|
|
reject(err)
|
|
})
|
|
|
|
connection.connect()
|
|
});
|
|
}
|