const db = require("./db"); const utils = require("./utils"); async function update(tblName, whereList, fieldList) { const params = []; let sql = 'UPDATE `' + tblName + '` SET '; fieldList.forEach((item, index) => { const suffix = (index + 1 < fieldList.length ? ',': ''); sql += ' `' + item[0] + '`=?' + suffix; params.push(item[1]); }); sql += ' WHERE 1=1'; whereList.forEach((item, index) => { sql += ' AND ' + item[0] + '=?'; params.push(item[1]); }); return db.execScript(sql, params); } async function mustBeUpdate(tblName, whereList, fieldList, time) { while (true) { const err = await update(tblName, whereList, fieldList, ); if (!err) { return err; } else { await utils.sleep(time); } } } async function insert(tblName, fieldList) { const params = []; let sql = 'INSERT INTO `' + tblName + '` ('; fieldList.forEach((item, index) => { const suffix = (index + 1 < fieldList.length ? ',': ''); sql += '`' + item[0] + '`' + suffix; }); sql += ') VALUES ('; fieldList.forEach((item, index) => { const suffix = (index + 1 < fieldList.length ? ',': ''); sql += '?' + suffix; params.push(item[1]); }); sql += ')'; return db.execScript(sql, params); } async function mustBeInsert(tblName, fieldList, time) { while (true) { const err = await insert(tblName, fieldList); if (!err) { return err; } else { await utils.sleep(time); } } } async function _delete(tblName, whereList) { const params = []; let sql = 'DELETE FROM `' + tblName + '` '; sql += ' WHERE 1=1'; whereList.forEach((item, index) => { sql += ' AND ' + item[0] + '=?'; params.push(item[1]); }); return db.execScript(sql, params); } async function ormSelect(tblName, whereList) { const params = []; let sql = 'SELECT * FROM `' + tblName + '` '; sql += ' WHERE 1=1'; whereList.forEach((item, index) => { sql += ' AND `' + item[0] + '`=?'; params.push(item[1]); }); return db.execQuery(sql, params); } async function ormSelectOne(tblName, whereList) { const {err, rows} = await ormSelect(tblName, whereList); return { 'err': err, 'row': rows.length > 0 ? rows[0] : null }; } async function mustBeOrmSelectOne(tblName, whereList, time) { while (true) { const {err, row} = await ormSelectOne(tblName, whereList); if (!err) { return { 'err': err, 'row': row }; } else { await utils.sleep(time); } } } exports.ormSelect = ormSelect; exports.ormSelectOne = ormSelectOne; exports.mustBeOrmSelectOne = mustBeOrmSelectOne; exports.update = update; exports.mustBeUpdate = mustBeUpdate; exports.insert = insert; exports.mustBeInsert = mustBeInsert; exports._delete = _delete;