import { DsqlCrudQueryObject } from "../../../../types"; import { DsqlTables } from "../../../../types/dsql"; import dsqlCrud from "../../../../utils/data-fetching/crud"; import query from "./query"; import _ from "lodash"; import _n from "../../../../utils/numberfy"; export type GrabUserResourceParams = { query?: DsqlCrudQueryObject; userId?: string | number; tableName: (typeof DsqlTables)[number]; count?: boolean; countOnly?: boolean; noLimit?: boolean; isSuperUser?: boolean; targetID?: string | number; }; export default async function dbGrabUserResource< T extends { [k: string]: any } = any >(params: GrabUserResourceParams) { let queryObject = query(params); let result = await dsqlCrud({ action: "get", table: params.tableName, query: queryObject, count: params.count, countOnly: params.countOnly, }); const payload = result?.payload as T[] | undefined; return { batch: payload || null, single: payload?.[0] || null, debug: { queryObject: result?.queryObject, error: result?.error, msg: result?.msg, }, count: _n(result?.count), }; }