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): Promise { let queryObject: ReturnType> | 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, }; }