UNPKG

jh-common-dataaccess

Version:
97 lines (95 loc) 2.31 kB
const moment = require('moment'); const MssqlHelper = require('./MssqlHelper'); const MysqlHelper = require('./MysqlHelper'); // const SqliteHelper = require('./SqliteHelper'); const PostgreHelper = require('./PostgreHelper'); module.exports = class DataAccess { constructor(config) { if (!('type' in config)) throw new Error(`params should include 'type'`); switch (config.type.toLowerCase()) { case 'mssql': this.Database = MssqlHelper; break; case 'mysql': this.Database = MysqlHelper; break; // case 'sqlite': // this.Database = SqliteHelper; // break; case 'postgre': this.Database = PostgreHelper; break; default: throw new Error('no this type database config'); break; } this.config = config; } /** * 获取datatable * @param {String} sqlstr */ getTable(sqlstr) { return new this.Database(this.config).query(sqlstr); } /** * 执行增删改 * @param {String} sqlstr */ execute(sqlstr) { return new this.Database(this.config).execute(sqlstr); } /** * 自动执行增删改 * @param {TransParams} transParams */ transExecute(transParams) { if (['', null, undefined].includes(transParams)) { return Promise.reject('params invalid'); } else { return new this.Database(this.config).translate(transParams); } } /** * 过滤参数 * @param {*} data 日期对象或者字符串 */ parse(data) { if (data) { if (data instanceof Date) { return `'${moment(data).format('YYYY-MM-DD HH:mm:ss')}'`; } else { data = data.trim(); return "'" + data.replace("'", '’') + "'"; } } else { return 'null'; } } /** * 生成分页语句 * @param {*} pageno * @param {*} pagesize * @param {*} sqlstr * @param {*} sp 排序逻辑(mssql分页时不可空) */ datapager(pageno, pagesize, sqlstr, sp) { if (sqlstr) { pageno = Math.max(pageno, 1); pagesize = Math.max(pagesize, 1); if (!sp || Object.keys(sp).length === 0) { sp = { Field: 1, SortDirection: 'asc' }; } return this.Database.datapager(pageno, pagesize, sqlstr, sp); } else { return sqlstr; } } /** * 包装字段,避免大小写敏感异常 * @param {*} field 表名/字段名 */ packCaseLow(field) { return new this.Database(this.config).packCaseLow(field); } };