From 6d4ccb63a39bda9c660fb9c5ba7cf1929346c465 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Fri, 7 Feb 2025 14:06:53 +0100 Subject: [PATCH] Updates --- dist/package-shared/types/index.d.ts | 16 ++++++++++++--- .../utils/data-fetching/method-crud.d.ts | 2 +- .../utils/data-fetching/method-crud.js | 16 +++++++++++++-- package-shared/types/index.ts | 20 +++++++++++-------- .../utils/data-fetching/method-crud.ts | 19 +++++++++++++++++- package.json | 2 +- 6 files changed, 59 insertions(+), 16 deletions(-) diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index bb7b47e..0e69028 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -1305,21 +1305,31 @@ export type DsqlMethodCrudParam; + transformQuery?: DsqlCrudTransformQueryFunction; existingData?: T; targetId?: string | number; sanitize?: (data?: T) => T; + debug?: boolean; }; export type DsqlCrudTransformFunction = ({ data, query, existingData, user, }: { +}> = (params: { + data: T; user?: DATASQUIREL_LoggedInUser; - data?: T; - query?: DsqlCrudQueryObject; existingData?: T; reqMethod: (typeof DataCrudRequestMethods)[number]; }) => Promise; +export type DsqlCrudTransformQueryFunction = (params: { + query: DsqlCrudQueryObject; + user?: DATASQUIREL_LoggedInUser; + reqMethod: (typeof DataCrudRequestMethods)[number]; +}) => Promise>; export declare const DsqlCrudActions: readonly ["insert", "update", "delete", "get"]; export type DsqlCrudQueryObject({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, }: DsqlMethodCrudParam): Promise>; +}>({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, transformQuery, debug, }: DsqlMethodCrudParam): Promise>; diff --git a/dist/package-shared/utils/data-fetching/method-crud.js b/dist/package-shared/utils/data-fetching/method-crud.js index 7b03a9b..aa409aa 100644 --- a/dist/package-shared/utils/data-fetching/method-crud.js +++ b/dist/package-shared/utils/data-fetching/method-crud.js @@ -19,7 +19,7 @@ const ejson_1 = __importDefault(require("../ejson")); const numberfy_1 = __importDefault(require("../numberfy")); const crud_1 = __importDefault(require("./crud")); function dsqlMethodCrud(_a) { - return __awaiter(this, arguments, void 0, function* ({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, }) { + return __awaiter(this, arguments, void 0, function* ({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, transformQuery, debug, }) { let result = { success: false, }; @@ -60,18 +60,30 @@ function dsqlMethodCrud(_a) { finalData = Object.assign(Object.assign({}, finalData), { [addUser.field]: String(user.id) }); } if (transform) { + if (debug) { + console.log("DEBUG:::transforming Data ..."); + } finalData = (yield transform({ data: finalData, existingData: existingData, user, reqMethod: method, })); - finalQuery = yield transform({ + } + if (transformQuery) { + if (debug) { + console.log("DEBUG:::transforming Query ..."); + } + finalQuery = yield 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 = yield (0, crud_1.default)({ diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index dd3c6e6..6ff98a2 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -1480,26 +1480,30 @@ export type DsqlMethodCrudParam< user?: DATASQUIREL_LoggedInUser; extraData?: T; transform?: DsqlCrudTransformFunction; + transformQuery?: DsqlCrudTransformQueryFunction; 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; existingData?: T; reqMethod: (typeof DataCrudRequestMethods)[number]; }) => Promise; +export type DsqlCrudTransformQueryFunction< + T extends { [key: string]: any } = { [key: string]: any } +> = (params: { + query: DsqlCrudQueryObject; + user?: DATASQUIREL_LoggedInUser; + reqMethod: (typeof DataCrudRequestMethods)[number]; +}) => Promise>; + export const DsqlCrudActions = ["insert", "update", "delete", "get"] as const; export type DsqlCrudQueryObject< diff --git a/package-shared/utils/data-fetching/method-crud.ts b/package-shared/utils/data-fetching/method-crud.ts index 6ac085b..a097780 100644 --- a/package-shared/utils/data-fetching/method-crud.ts +++ b/package-shared/utils/data-fetching/method-crud.ts @@ -37,6 +37,8 @@ export default async function dsqlMethodCrud< query, targetId, sanitize, + transformQuery, + debug, }: DsqlMethodCrudParam): Promise> { 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({ diff --git a/package.json b/package.json index b198ddd..aedd4f4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "4.0.0", + "version": "4.0.1", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {