45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
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<T extends { [k: string]: any } = any> = {
|
|
query?: DsqlCrudQueryObject<T>;
|
|
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<T>) {
|
|
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),
|
|
};
|
|
}
|