69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import sqlGenerator from "../../functions/dsql/sql/sql-generator";
|
|
import { DsqlCrudParam } from "../../types";
|
|
import connDbHandler, { ConnDBHandlerQueryObject } from "../db/conn-db-handler";
|
|
import { DsqlCrudReturn } from "./crud";
|
|
|
|
export default async function dsqlCrudGet({
|
|
table,
|
|
query,
|
|
count,
|
|
countOnly,
|
|
}: DsqlCrudParam<any>): Promise<DsqlCrudReturn> {
|
|
let queryObject: ReturnType<Awaited<typeof sqlGenerator>> | undefined;
|
|
|
|
queryObject = sqlGenerator({
|
|
tableName: table,
|
|
genObject: query,
|
|
});
|
|
|
|
const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
|
|
|
|
let connQueries: ConnDBHandlerQueryObject[] = [
|
|
{
|
|
query: queryObject?.string,
|
|
values: queryObject?.values || [],
|
|
},
|
|
];
|
|
|
|
const countQueryObject =
|
|
count || countOnly
|
|
? sqlGenerator({
|
|
tableName: table,
|
|
genObject: query,
|
|
count: true,
|
|
})
|
|
: undefined;
|
|
|
|
if (count && countQueryObject) {
|
|
connQueries.push({
|
|
query: countQueryObject.string,
|
|
values: countQueryObject.values,
|
|
});
|
|
} else if (countOnly && countQueryObject) {
|
|
connQueries = [
|
|
{
|
|
query: countQueryObject.string,
|
|
values: countQueryObject.values,
|
|
},
|
|
];
|
|
}
|
|
|
|
const res = await connDbHandler(DB_CONN, connQueries);
|
|
|
|
const isSuccess = Array.isArray(res) && Array.isArray(res[0]);
|
|
|
|
return {
|
|
success: isSuccess,
|
|
payload: isSuccess ? (countOnly ? null : res[0]) : null,
|
|
error: isSuccess ? undefined : res?.error,
|
|
queryObject,
|
|
count: isSuccess
|
|
? res[1]?.[0]?.["COUNT(*)"]
|
|
? res[1][0]["COUNT(*)"]
|
|
: res[0]?.[0]?.["COUNT(*)"]
|
|
? res[0][0]["COUNT(*)"]
|
|
: undefined
|
|
: undefined,
|
|
};
|
|
}
|