49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
import mysql from "mysql";
|
|
import DbClient from ".";
|
|
import _ from "lodash";
|
|
import sqlGenerator from "../../utils/sql-generator";
|
|
export default async function DbSelect({ table, query, count, targetId }) {
|
|
try {
|
|
let finalQuery = query || {};
|
|
if (targetId) {
|
|
finalQuery = _.merge(finalQuery, {
|
|
query: {
|
|
id: {
|
|
value: String(targetId),
|
|
},
|
|
},
|
|
});
|
|
}
|
|
const sqlObj = sqlGenerator({
|
|
tableName: table,
|
|
genObject: finalQuery,
|
|
count,
|
|
});
|
|
const sql = mysql.format(sqlObj.string, sqlObj.values);
|
|
const res = DbClient.query(sql);
|
|
const batchRes = res.all();
|
|
let resp = {
|
|
success: Boolean(batchRes[0]),
|
|
payload: batchRes,
|
|
singleRes: batchRes[0],
|
|
debug: {
|
|
sqlObj,
|
|
sql,
|
|
},
|
|
};
|
|
if (count) {
|
|
const count_val = count ? batchRes[0]?.["COUNT(*)"] : undefined;
|
|
resp["count"] = Number(count_val);
|
|
delete resp.payload;
|
|
delete resp.singleRes;
|
|
}
|
|
return resp;
|
|
}
|
|
catch (error) {
|
|
return {
|
|
success: false,
|
|
error: error.message,
|
|
};
|
|
}
|
|
}
|