????

Your IP : 3.147.8.255


Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/models/
Upload File :
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;