68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
import dbHandler from "../db-handler";
|
|
import sqlGenerator from "../../utils/sql-generator";
|
|
export default async function DbSelect({ table, query, count, targetId, config, }) {
|
|
let sqlObj = null;
|
|
try {
|
|
const finalQuery = query || {};
|
|
sqlObj = sqlGenerator({
|
|
tableName: table,
|
|
genObject: finalQuery,
|
|
targetId,
|
|
});
|
|
const sql = sqlObj.string;
|
|
const res = dbHandler({
|
|
query: sql,
|
|
values: sqlObj.values,
|
|
config,
|
|
});
|
|
if (!res.success) {
|
|
return { ...res, debug: { sqlObj, sql } };
|
|
}
|
|
const batchRes = res.payload || [];
|
|
let resp = {
|
|
success: Boolean(batchRes[0]),
|
|
payload: batchRes,
|
|
singleRes: batchRes[0],
|
|
debug: {
|
|
sqlObj,
|
|
sql,
|
|
},
|
|
};
|
|
if (count) {
|
|
const count_sql_object = sqlGenerator({
|
|
tableName: table,
|
|
genObject: finalQuery,
|
|
targetId,
|
|
count,
|
|
});
|
|
const count_sql = `SELECT COUNT(*) AS count FROM (${count_sql_object.string}) AS c`;
|
|
const count_res = dbHandler({
|
|
query: count_sql,
|
|
values: count_sql_object.values,
|
|
config,
|
|
});
|
|
if (!count_res.success) {
|
|
return {
|
|
...resp,
|
|
success: false,
|
|
error: count_res.error,
|
|
msg: "Database count failed",
|
|
debug: { ...resp.debug, count_sql },
|
|
};
|
|
}
|
|
resp["count"] = Number(count_res.singleRes?.count);
|
|
resp["debug"]["count_sql"] = count_sql;
|
|
}
|
|
return resp;
|
|
}
|
|
catch (error) {
|
|
return {
|
|
success: false,
|
|
error: error.message,
|
|
debug: {
|
|
sqlObj,
|
|
},
|
|
};
|
|
}
|
|
}
|