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

View File

@ -1305,21 +1305,31 @@ export type DsqlMethodCrudParam<T extends {
user?: DATASQUIREL_LoggedInUser; user?: DATASQUIREL_LoggedInUser;
extraData?: T; extraData?: T;
transform?: DsqlCrudTransformFunction<T>; transform?: DsqlCrudTransformFunction<T>;
transformQuery?: DsqlCrudTransformQueryFunction<T>;
existingData?: T; existingData?: T;
targetId?: string | number; targetId?: string | number;
sanitize?: (data?: T) => T; sanitize?: (data?: T) => T;
debug?: boolean;
}; };
export type DsqlCrudTransformFunction<T extends { export type DsqlCrudTransformFunction<T extends {
[key: string]: any; [key: string]: any;
} = { } = {
[key: string]: any; [key: string]: any;
}> = ({ data, query, existingData, user, }: { }> = (params: {
data: T;
user?: DATASQUIREL_LoggedInUser; user?: DATASQUIREL_LoggedInUser;
data?: T;
query?: DsqlCrudQueryObject<T>;
existingData?: T; existingData?: T;
reqMethod: (typeof DataCrudRequestMethods)[number]; reqMethod: (typeof DataCrudRequestMethods)[number];
}) => Promise<T>; }) => 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 declare const DsqlCrudActions: readonly ["insert", "update", "delete", "get"]; export declare const DsqlCrudActions: readonly ["insert", "update", "delete", "get"];
export type DsqlCrudQueryObject<T extends { export type DsqlCrudQueryObject<T extends {
[key: string]: any; [key: string]: any;

View File

@ -18,4 +18,4 @@ export default function dsqlMethodCrud<T extends {
[key: string]: any; [key: string]: any;
} = { } = {
[key: string]: any; [key: string]: any;
}>({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, }: DsqlMethodCrudParam<T>): Promise<CRUDResponseObject<P>>; }>({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, transformQuery, debug, }: DsqlMethodCrudParam<T>): Promise<CRUDResponseObject<P>>;

View File

@ -19,7 +19,7 @@ const ejson_1 = __importDefault(require("../ejson"));
const numberfy_1 = __importDefault(require("../numberfy")); const numberfy_1 = __importDefault(require("../numberfy"));
const crud_1 = __importDefault(require("./crud")); const crud_1 = __importDefault(require("./crud"));
function dsqlMethodCrud(_a) { 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 = { let result = {
success: false, success: false,
}; };
@ -60,18 +60,30 @@ function dsqlMethodCrud(_a) {
finalData = Object.assign(Object.assign({}, finalData), { [addUser.field]: String(user.id) }); finalData = Object.assign(Object.assign({}, finalData), { [addUser.field]: String(user.id) });
} }
if (transform) { if (transform) {
if (debug) {
console.log("DEBUG:::transforming Data ...");
}
finalData = (yield transform({ finalData = (yield transform({
data: finalData, data: finalData,
existingData: existingData, existingData: existingData,
user, user,
reqMethod: method, reqMethod: method,
})); }));
finalQuery = yield transform({ }
if (transformQuery) {
if (debug) {
console.log("DEBUG:::transforming Query ...");
}
finalQuery = yield transformQuery({
query: finalQuery, query: finalQuery,
user, user,
reqMethod: method, reqMethod: method,
}); });
} }
if (debug) {
console.log("DEBUG:::finalQuery", finalQuery);
console.log("DEBUG:::finalData", finalData);
}
switch (method) { switch (method) {
case "GET": case "GET":
const GET_RESULT = yield (0, crud_1.default)({ const GET_RESULT = yield (0, crud_1.default)({

View File

@ -1480,26 +1480,30 @@ export type DsqlMethodCrudParam<
user?: DATASQUIREL_LoggedInUser; user?: DATASQUIREL_LoggedInUser;
extraData?: T; extraData?: T;
transform?: DsqlCrudTransformFunction<T>; transform?: DsqlCrudTransformFunction<T>;
transformQuery?: DsqlCrudTransformQueryFunction<T>;
existingData?: T; existingData?: T;
targetId?: string | number; targetId?: string | number;
sanitize?: (data?: T) => T; sanitize?: (data?: T) => T;
debug?: boolean;
}; };
export type DsqlCrudTransformFunction< export type DsqlCrudTransformFunction<
T extends { [key: string]: any } = { [key: string]: any } T extends { [key: string]: any } = { [key: string]: any }
> = ({ > = (params: {
data, data: T;
query,
existingData,
user,
}: {
user?: DATASQUIREL_LoggedInUser; user?: DATASQUIREL_LoggedInUser;
data?: T;
query?: DsqlCrudQueryObject<T>;
existingData?: T; existingData?: T;
reqMethod: (typeof DataCrudRequestMethods)[number]; reqMethod: (typeof DataCrudRequestMethods)[number];
}) => Promise<T>; }) => 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 const DsqlCrudActions = ["insert", "update", "delete", "get"] as const;
export type DsqlCrudQueryObject< export type DsqlCrudQueryObject<

View File

@ -37,6 +37,8 @@ export default async function dsqlMethodCrud<
query, query,
targetId, targetId,
sanitize, sanitize,
transformQuery,
debug,
}: DsqlMethodCrudParam<T>): Promise<CRUDResponseObject<P>> { }: DsqlMethodCrudParam<T>): Promise<CRUDResponseObject<P>> {
let result: CRUDResponseObject = { let result: CRUDResponseObject = {
success: false, success: false,
@ -92,20 +94,35 @@ export default async function dsqlMethodCrud<
} }
if (transform) { if (transform) {
if (debug) {
console.log("DEBUG:::transforming Data ...");
}
finalData = (await transform({ finalData = (await transform({
data: finalData, data: finalData,
existingData: existingData, existingData: existingData,
user, user,
reqMethod: method, reqMethod: method,
})) as T; })) as T;
}
finalQuery = await transform({ if (transformQuery) {
if (debug) {
console.log("DEBUG:::transforming Query ...");
}
finalQuery = await transformQuery({
query: finalQuery, query: finalQuery,
user, user,
reqMethod: method, reqMethod: method,
}); });
} }
if (debug) {
console.log("DEBUG:::finalQuery", finalQuery);
console.log("DEBUG:::finalData", finalData);
}
switch (method) { switch (method) {
case "GET": case "GET":
const GET_RESULT = await dsqlCrud({ const GET_RESULT = await dsqlCrud({

View File

@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/datasquirel", "name": "@moduletrace/datasquirel",
"version": "4.0.0", "version": "4.0.1",
"description": "Cloud-based SQL data management tool", "description": "Cloud-based SQL data management tool",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {