????
Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/models/ |
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/models/Database.js |
require('dotenv/config'); const config = require('./config'); let sql = require('mssql'); class Database { static create(params) { return new Database(params); } async getColumns(table) { return this.select(`SELECT c.name 'ColumnName', t.Name 'DataType', c.max_length 'MaxLength', c.precision, c.scale, c.is_nullable, C.is_identity 'IsIdentity', ISNULL(i.is_primary_key, 0) 'PrimaryKey' FROM sys.columns c INNER JOIN sys.types t ON c.user_type_id = t.user_type_id LEFT OUTER JOIN sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id WHERE c.object_id = OBJECT_ID('${table}')`); } async query(template, input = {}) { let pool = new sql.ConnectionPool(config); try { await pool.connect(); let request = pool.request(); for (var name in input) { if (input[name] instanceof Date) request.input(name, sql.DateTime2, input[name]); else request.input(name, input[name]); } let result = await request.query(template); return result; } finally { pool.close(); } } async select(template, input) { return (await this.query(template, input)).recordset; } exec_sp(name, input, request) { return new Promise((resolve, reject) => { if (request) { for (var i = 0; i < input.length; i++) { request.input(input[i].name, input[i].type || sql.NVarChar, input[i].value); } request.execute(name, (err, result) => { if (err) reject(err); else resolve(result); //this.close(); }); } else { this.connect().then((request) => { for (var i = 0; i < input.length; i++) { request.input(input[i].name, input[i].type || sql.NVarChar, input[i].value); } request.execute(name, (err, result) => { if (err) reject(err); else resolve(result); }); }).catch(err => reject(err)); } }) } } module.exports = Database;