This commit is contained in:
Benjamin Toby
2025-02-07 14:06:53 +01:00
parent b8fbbd3afb
commit 6d4ccb63a3
6 changed files with 59 additions and 16 deletions
+12 -8
View File
@@ -1480,26 +1480,30 @@ export type DsqlMethodCrudParam<
user?: DATASQUIREL_LoggedInUser;
extraData?: T;
transform?: DsqlCrudTransformFunction<T>;
transformQuery?: DsqlCrudTransformQueryFunction<T>;
existingData?: T;
targetId?: string | number;
sanitize?: (data?: T) => T;
debug?: boolean;
};
export type DsqlCrudTransformFunction<
T extends { [key: string]: any } = { [key: string]: any }
> = ({
data,
query,
existingData,
user,
}: {
> = (params: {
data: T;
user?: DATASQUIREL_LoggedInUser;
data?: T;
query?: DsqlCrudQueryObject<T>;
existingData?: T;
reqMethod: (typeof DataCrudRequestMethods)[number];
}) => Promise<T>;
export type DsqlCrudTransformQueryFunction<
T extends { [key: string]: any } = { [key: string]: any }
> = (params: {
query: DsqlCrudQueryObject<T>;
user?: DATASQUIREL_LoggedInUser;
reqMethod: (typeof DataCrudRequestMethods)[number];
}) => Promise<DsqlCrudQueryObject<T>>;
export const DsqlCrudActions = ["insert", "update", "delete", "get"] as const;
export type DsqlCrudQueryObject<
@@ -37,6 +37,8 @@ export default async function dsqlMethodCrud<
query,
targetId,
sanitize,
transformQuery,
debug,
}: DsqlMethodCrudParam<T>): Promise<CRUDResponseObject<P>> {
let result: CRUDResponseObject = {
success: false,
@@ -92,20 +94,35 @@ export default async function dsqlMethodCrud<
}
if (transform) {
if (debug) {
console.log("DEBUG:::transforming Data ...");
}
finalData = (await transform({
data: finalData,
existingData: existingData,
user,
reqMethod: method,
})) as T;
}
finalQuery = await transform({
if (transformQuery) {
if (debug) {
console.log("DEBUG:::transforming Query ...");
}
finalQuery = await transformQuery({
query: finalQuery,
user,
reqMethod: method,
});
}
if (debug) {
console.log("DEBUG:::finalQuery", finalQuery);
console.log("DEBUG:::finalData", finalData);
}
switch (method) {
case "GET":
const GET_RESULT = await dsqlCrud({