UNPKG

mgm

Version:

My generic modules

103 lines (85 loc) 3.18 kB
const BaseEntity = require('../model/BaseEntity'); const Tools = require('../tool/Tools'); module.exports = class BaseDAO { constructor() { this.dataBase = require('../db/DataBase'); } addConditions(sql, entity) { Object.keys(entity).forEach(key => { if (entity[key] instanceof Array) {} else if (entity[key] instanceof BaseEntity) { //sql.push("AND " + p + "_id = '" + entity[p].id + "' "); } else if (entity[key] != '') { sql.push(`AND ${key} = '${entity[key]}' `); } }); } getDeleteSql(entity) { let sql = []; sql.push(`DELETE `); sql.push(`FROM ${entity.constructor.name} `); sql.push(`WHERE 1 = 1 `); this.addConditions(sql, entity); return sql; } getQuerySql(entity) { let sql = []; sql.push(`SELECT * `); sql.push(`FROM ${entity.constructor.name} `); sql.push(`WHERE 1 = 1 `); this.addConditions(sql, entity); sql.push(`ORDER BY dataCadastro DESC `); return sql; } getSaveSql(entity) { let sql = []; let fields = []; let values = []; sql.push(`INSERT INTO ${entity.constructor.name} `); Object.keys(entity).forEach(key => { if (entity[key] instanceof Array) {} else if (entity[key] instanceof BaseEntity) {} else { fields.push(key); } }); Object.keys(entity).forEach(key => { if (entity[key] instanceof Array) {} else if (entity[key] instanceof BaseEntity) {} else if (entity[key] != '') { values.push(`'${entity[key]}'`); } else { values.push("null"); } }); sql.push(`(${fields.join(', ')}) VALUES (${values.join(', ')}) `); return sql; } getUpdateSql(entity) { let sql = []; let update = []; sql.push(`UPDATE ${entity.constructor.name} `); Object.keys(entity).forEach(key => { if (entity[key] instanceof Array) {} else if (entity[key] instanceof BaseEntity) {} else if (entity[key] != '') { update.push(key + ` = '${entity[key]}'`); } else { update.push(key + ` = null`); } }); sql.push(`SET ${update.join(', ')} `); sql.push(`WHERE ID = ${entity.id} `); return sql; } runSql(sql) { return this.dataBase.runSql(sql); } doSearch(entity) { return entity.transformAll(this.dataBase.query(this.getQuerySql(entity))); } doDelete(entity) { this.dataBase.update(this.getDeleteSql(entity)); } doSave(entity) { if (entity.id === '') { this.dataBase.update(this.getSaveSql(entity.setDataCadastro(Tools.formatDate(new Date())))); entity.id = this.dataBase.unique([`SELECT MAX(id) id FROM ${entity.constructor.name}`]).id; } else { this.dataBase.update(this.getUpdateSql(entity)); } } };