storemw-core-api 1.0.179 → 1.0.180

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/controllers/injection_field/injectionFieldController.js +2 -6
  2. package/dist/controllers/injection_field/injectionFieldController.js.map +1 -1
  3. package/dist/services/injection_field/unuse/LogisticInjectionFieldService.js +116 -0
  4. package/dist/services/injection_field/unuse/LogisticInjectionFieldService.js.map +1 -0
  5. package/dist/services/injection_field/unuse/RepositoryInjectionFieldService.d.ts +1 -0
  6. package/dist/services/injection_field/unuse/RepositoryInjectionFieldService.js +131 -0
  7. package/dist/services/injection_field/unuse/RepositoryInjectionFieldService.js.map +1 -0
  8. package/dist/utils/schemaUtils.js +3 -2
  9. package/dist/utils/schemaUtils.js.map +1 -1
  10. package/package.json +1 -1
  11. package/prisma/schema.prisma +45 -0
  12. package/dist/models/group/GroupModel.d.ts +0 -227
  13. package/dist/models/group/GroupModel.js +0 -13
  14. package/dist/models/group/GroupModel.js.map +0 -1
  15. package/dist/models/group/GroupOwnerModel.d.ts +0 -216
  16. package/dist/models/group/GroupOwnerModel.js +0 -13
  17. package/dist/models/group/GroupOwnerModel.js.map +0 -1
  18. package/dist/models/user/UserPropModel.d.ts +0 -256
  19. package/dist/models/user/UserPropModel.js +0 -13
  20. package/dist/models/user/UserPropModel.js.map +0 -1
  21. package/dist/route_contracts/access_control/accessControlPoliciesRoutes.d.ts +0 -2
  22. package/dist/route_contracts/access_control/accessControlPoliciesRoutes.js +0 -21
  23. package/dist/route_contracts/access_control/accessControlPoliciesRoutes.js.map +0 -1
  24. package/dist/route_contracts/access_control/accessControlRoleRoutes.d.ts +0 -2
  25. package/dist/route_contracts/access_control/accessControlRoleRoutes.js +0 -48
  26. package/dist/route_contracts/access_control/accessControlRoleRoutes.js.map +0 -1
  27. package/dist/route_contracts/access_control/accessControlRolesRoutes.d.ts +0 -2
  28. package/dist/route_contracts/access_control/accessControlRolesRoutes.js +0 -37
  29. package/dist/route_contracts/access_control/accessControlRolesRoutes.js.map +0 -1
  30. package/dist/route_contracts/access_control/accessControlRoutes.d.ts +0 -2
  31. package/dist/route_contracts/access_control/accessControlRoutes.js +0 -18
  32. package/dist/route_contracts/access_control/accessControlRoutes.js.map +0 -1
  33. package/dist/route_contracts/access_control/accessControlUserRolesRoutes.d.ts +0 -2
  34. package/dist/route_contracts/access_control/accessControlUserRolesRoutes.js +0 -21
  35. package/dist/route_contracts/access_control/accessControlUserRolesRoutes.js.map +0 -1
  36. package/dist/route_contracts/auth/authRoutes.d.ts +0 -2
  37. package/dist/route_contracts/auth/authRoutes.js +0 -23
  38. package/dist/route_contracts/auth/authRoutes.js.map +0 -1
  39. package/dist/route_contracts/index.d.ts +0 -2
  40. package/dist/route_contracts/index.js +0 -39
  41. package/dist/route_contracts/index.js.map +0 -1
  42. package/dist/scripts/migrate.js +0 -42
  43. package/dist/scripts/migrate.js.map +0 -1
  44. package/dist/services/file/ImageCompression.d.ts +0 -9
  45. package/dist/services/file/ImageCompression.js +0 -47
  46. package/dist/services/file/ImageCompression.js.map +0 -1
  47. /package/dist/{scripts/migrate.d.ts → services/injection_field/unuse/LogisticInjectionFieldService.d.ts} +0 -0
@@ -17,12 +17,8 @@ const getRootName = (requestInjectionFieldType, toSingular) => {
17
17
  case "document":
18
18
  rootName = toSingular ? "injection_field" : "injection_fields";
19
19
  break;
20
- case "repository":
21
- rootName = toSingular ? "injection_field" : "injection_fields";
22
- break;
23
- case "logistic":
24
- rootName = toSingular ? "injection_field" : "injection_fields";
25
- break;
20
+ // case "repository": rootName = toSingular ? "injection_field" : "injection_fields"; break;
21
+ // case "logistic": rootName = toSingular ? "injection_field" : "injection_fields"; break;
26
22
  }
27
23
  return rootName;
28
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"injectionFieldController.js","sourceRoot":"","sources":["../../../src/controllers/injection_field/injectionFieldController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\nimport { groupPayloadInjectionFields } from '@/utils'\n\nimport { InjectionFieldService, InjectionFieldListProps, InjectionFieldServiceProps, InjectionFieldCreateProps, InjectionFieldReplaceProps } from \"@/services\"\nimport { schemaInjectionFieldReplacePayload, schemaInjectionFieldCreatePayload, schemaInjectionFieldDeletePayload } from \"@/schema/payload\";\nimport { QueryList } from \"@/schema/middleware/route\";\n\nconst getRootName = (requestInjectionFieldType: InjectionFieldServiceProps[\"injectionFieldType\"], toSingular: boolean) => {\n\n let rootName: any = ``\n\n switch (requestInjectionFieldType) {\n case \"user\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n case \"item\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n case \"document\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n case \"repository\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n case \"logistic\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n }\n\n return rootName\n}\n\n/** injection_field : create injection field */\nexport const createInjectionField = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n // const requestUserType = req.body.scope.target as InjectionFieldServiceProps[\"injectionFieldType\"]\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: \"user\"\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n let request = schemaInjectionFieldCreatePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action\n },\n payload: {\n injection_fields: reqPayload?.injection_fields.map((i: any) => ({\n field_module: `${i.field_module}`,\n field_ref: `${i.field_ref}`,\n field_key: `${i.field_key}`,\n field_type: `${i.field_type}`,\n }))\n }\n })\n\n response = await Promise.all(\n request.payload.injection_fields.map(i => {\n const payload: InjectionFieldCreateProps = {\n data: {\n ...i,\n is_multiple: false,\n merge_multiple_inline: false,\n multiple_count: false,\n },\n };\n\n return injectionFieldService.createInjectionField(payload);\n })\n );\n\n sendSuccess(res, response, `Injection Fields created successfully`, `injection_field`)\n\n } catch (error: any) {\n next(error);\n }\n};\n\n/** injection_fields : replace injection fields */\nexport const replaceInjectionFields = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n const requestInjectionFieldType = req.body.scope.target as InjectionFieldServiceProps[\"injectionFieldType\"]\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: requestInjectionFieldType\n })\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n let response: any = {}\n\n let request = schemaInjectionFieldReplacePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action,\n },\n payload: reqPayload\n })\n\n let groupInjectionFields: any = []\n\n if (requestInjectionFieldType === \"user\") {\n\n groupInjectionFields = groupPayloadInjectionFields(request.payload.injection_fields, {\n user: \"userId\",\n branch: \"branchId\",\n });\n\n }\n\n if (requestInjectionFieldType === \"item\") {\n\n groupInjectionFields = groupPayloadInjectionFields(request.payload.injection_fields, {}, {\n item: \"itemId\",\n product: \"productId\",\n category: \"categoryId\",\n brand: \"brandId\",\n uom: \"uomId\",\n });\n\n }\n\n if (requestInjectionFieldType === \"document\") {\n\n groupInjectionFields = groupPayloadInjectionFields(request.payload.injection_fields, {}, {\n document: \"documentId\",\n documentItem: \"documentItemId\"\n });\n\n }\n\n const responseAll = await Promise.all(\n groupInjectionFields.map(async (i: any) => {\n const payload = {\n injectionFieldType: requestInjectionFieldType,\n data: i as InjectionFieldReplaceProps[\"data\"],\n };\n\n try {\n return injectionFieldService.replaceInjectionField(payload);\n } catch (error) {\n // console.log('err', error)\n return error\n }\n\n })\n );\n\n // console.log('responseAll', JSON.stringify(responseAll))\n\n response = {\n [`${getRootName(requestInjectionFieldType, false)}`]: responseAll\n }\n\n sendSuccess(res, response, `Injection Fields(${requestInjectionFieldType}) replaced successfully`)\n\n } catch (err: any) {\n next(err);\n }\n};\n\n/** injection_field/definition/:id : get injection field (registered) */\nexport const getInjectionField = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n try {\n\n const { id } = req.params;\n const requestQuery = req.query as unknown as QueryList;\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: \"user\" // any\n })\n\n const data = await injectionFieldService.getInjectionField({ id: Number(id), datatypes: requestQuery.datatypes })\n\n return sendSuccess(res, data, \"Retrieved successfully\", `injection_field`);\n\n } catch (error: any) {\n next(error);\n }\n}\n\n/** injection_fields/injection_field : list injection fields registered */\nexport const listInjectionFields = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestQuery = req.query as unknown as QueryList;\n // const requestInjectionFieldType = req.params.locationType as InjectionFieldServiceProps[\"injectionFieldType\"];\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: \"document\" // any\n })\n\n let payload: InjectionFieldListProps = requestQuery\n\n payload = {\n ...requestQuery\n }\n\n\n const { data, total } = await injectionFieldService.listInjectionFields(payload);\n\n let response = {\n [`injection_fields`]: data,\n total,\n }\n\n return sendSuccess(res, response, \"Retrieved successfully\");\n\n } catch (error: any) {\n next(error);\n }\n};\n\n/** injection_fields/delete : delete injection fields */\nexport const deleteInjectionFields = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestInjectionFieldType = req.body.scope.target as InjectionFieldServiceProps[\"injectionFieldType\"]\n // const requestQuery = req.query as unknown as QueryList;\n // const requestFileId = Number(req.params.fileId)\n\n const request = schemaInjectionFieldDeletePayload.parse(req.body)\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: requestInjectionFieldType\n })\n\n const payload = {\n injectionFieldIds: request.payload.ids.map(i => BigInt(i))\n }\n\n const data = await injectionFieldService.removeInjectionFields(payload);\n\n return sendSuccess(res, data, \"Deleted\", `injection_fields`);\n\n } catch (error: any) {\n next(error);\n }\n};"]}
1
+ {"version":3,"file":"injectionFieldController.js","sourceRoot":"","sources":["../../../src/controllers/injection_field/injectionFieldController.ts"],"names":[],"mappings":";;;AAEA,mCAAqF;AACrF,mCAAqD;AAErD,yCAA8J;AAC9J,8CAA4I;AAG5I,MAAM,WAAW,GAAG,CAAC,yBAA2E,EAAE,UAAmB,EAAE,EAAE;IAErH,IAAI,QAAQ,GAAQ,EAAE,CAAA;IAEtB,QAAQ,yBAAyB,EAAE,CAAC;QAChC,KAAK,MAAM;YAAE,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAAC,MAAM;QACnF,KAAK,MAAM;YAAE,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAAC,MAAM;QACnF,KAAK,UAAU;YAAE,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAAC,MAAM;QACvF,4FAA4F;QAC5F,0FAA0F;IAC9F,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC,CAAA;AAED,+CAA+C;AACxC,MAAM,oBAAoB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;IACzG,IAAI,CAAC;QAED,oGAAoG;QAEpG,MAAM,qBAAqB,GAAG,IAAA,gCAAqB,EAAC;YAChD,GAAG,IAAA,8BAAsB,EAAC,GAAG,CAAC;YAC9B,kBAAkB,EAAE,MAAM;SAC7B,CAAC,CAAA;QAEF,IAAI,QAAQ,GAAQ,EAAE,CAAA;QAEtB,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAA;QAC7B,IAAI,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;QAEjC,IAAI,OAAO,GAAG,2CAAiC,CAAC,KAAK,CAAC;YAClD,KAAK,EAAE;gBACH,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;aAC1B;YACD,OAAO,EAAE;gBACL,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBAC5D,YAAY,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE;oBACjC,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE;oBAC3B,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE;oBAC3B,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE;iBAChC,CAAC,CAAC;aACN;SACJ,CAAC,CAAA;QAEF,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CACxB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrC,MAAM,OAAO,GAA8B;gBACvC,IAAI,EAAE;oBACF,GAAG,CAAC;oBACJ,WAAW,EAAE,KAAK;oBAClB,qBAAqB,EAAE,KAAK;oBAC5B,cAAc,EAAE,KAAK;iBACxB;aACJ,CAAC;YAEF,OAAO,qBAAqB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC,CACL,CAAC;QAEF,IAAA,mBAAW,EAAC,GAAG,EAAE,QAAQ,EAAE,uCAAuC,EAAE,iBAAiB,CAAC,CAAA;IAE1F,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAlDW,QAAA,oBAAoB,wBAkD/B;AAEF,kDAAkD;AAC3C,MAAM,sBAAsB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;IAC3G,IAAI,CAAC;QAED,MAAM,yBAAyB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAA0D,CAAA;QAE3G,MAAM,qBAAqB,GAAG,IAAA,gCAAqB,EAAC;YAChD,GAAG,IAAA,8BAAsB,EAAC,GAAG,CAAC;YAC9B,kBAAkB,EAAE,yBAAyB;SAChD,CAAC,CAAA;QAEF,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAA;QAC7B,IAAI,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;QAEjC,IAAI,QAAQ,GAAQ,EAAE,CAAA;QAEtB,IAAI,OAAO,GAAG,4CAAkC,CAAC,KAAK,CAAC;YACnD,KAAK,EAAE;gBACH,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;aAC1B;YACD,OAAO,EAAE,UAAU;SACtB,CAAC,CAAA;QAEF,IAAI,oBAAoB,GAAQ,EAAE,CAAA;QAElC,IAAI,yBAAyB,KAAK,MAAM,EAAE,CAAC;YAEvC,oBAAoB,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACjF,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,UAAU;aACrB,CAAC,CAAC;QAEP,CAAC;QAED,IAAI,yBAAyB,KAAK,MAAM,EAAE,CAAC;YAEvC,oBAAoB,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE;gBACrF,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO;aACf,CAAC,CAAC;QAEP,CAAC;QAED,IAAI,yBAAyB,KAAK,UAAU,EAAE,CAAC;YAE3C,oBAAoB,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE;gBACrF,QAAQ,EAAE,YAAY;gBACtB,YAAY,EAAE,gBAAgB;aACjC,CAAC,CAAC;QAEP,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAM,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG;gBACZ,kBAAkB,EAAE,yBAAyB;gBAC7C,IAAI,EAAE,CAAuC;aAChD,CAAC;YAEF,IAAI,CAAC;gBACD,OAAO,qBAAqB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,4BAA4B;gBAC5B,OAAO,KAAK,CAAA;YAChB,CAAC;QAEL,CAAC,CAAC,CACL,CAAC;QAEF,0DAA0D;QAE1D,QAAQ,GAAG;YACP,CAAC,GAAG,WAAW,CAAC,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,WAAW;SACpE,CAAA;QAED,IAAA,mBAAW,EAAC,GAAG,EAAE,QAAQ,EAAE,oBAAoB,yBAAyB,yBAAyB,CAAC,CAAA;IAEtG,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;AACL,CAAC,CAAC;AAnFW,QAAA,sBAAsB,0BAmFjC;AAEF,wEAAwE;AACjE,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAgB,EAAE;IACrG,IAAI,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,GAAG,GAAG,CAAC,KAA6B,CAAC;QAEvD,MAAM,qBAAqB,GAAG,IAAA,gCAAqB,EAAC;YAChD,GAAG,IAAA,8BAAsB,EAAC,GAAG,CAAC;YAC9B,kBAAkB,EAAE,MAAM,CAAC,MAAM;SACpC,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAA;QAEjH,OAAO,IAAA,mBAAW,EAAC,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,iBAAiB,CAAC,CAAC;IAE/E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC;AACL,CAAC,CAAA;AAlBY,QAAA,iBAAiB,qBAkB7B;AAED,0EAA0E;AACnE,MAAM,mBAAmB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAgB,EAAE;IAEvG,IAAI,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,KAA6B,CAAC;QACvD,iHAAiH;QAEjH,MAAM,qBAAqB,GAAG,IAAA,gCAAqB,EAAC;YAChD,GAAG,IAAA,8BAAsB,EAAC,GAAG,CAAC;YAC9B,kBAAkB,EAAE,UAAU,CAAC,MAAM;SACxC,CAAC,CAAA;QAEF,IAAI,OAAO,GAA4B,YAAY,CAAA;QAEnD,OAAO,GAAG;YACN,GAAG,YAAY;SAClB,CAAA;QAGD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEjF,IAAI,QAAQ,GAAG;YACX,CAAC,kBAAkB,CAAC,EAAE,IAAI;YAC1B,KAAK;SACR,CAAA;QAED,OAAO,IAAA,mBAAW,EAAC,GAAG,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAEhE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AA/BW,QAAA,mBAAmB,uBA+B9B;AAEF,wDAAwD;AACjD,MAAM,qBAAqB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAgB,EAAE;IAEzG,IAAI,CAAC;QAED,MAAM,yBAAyB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAA0D,CAAA;QAC3G,0DAA0D;QAC1D,kDAAkD;QAElD,MAAM,OAAO,GAAG,2CAAiC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEjE,MAAM,qBAAqB,GAAG,IAAA,gCAAqB,EAAC;YAChD,GAAG,IAAA,8BAAsB,EAAC,GAAG,CAAC;YAC9B,kBAAkB,EAAE,yBAAyB;SAChD,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG;YACZ,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7D,CAAA;QAED,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExE,OAAO,IAAA,mBAAW,EAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAEjE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AA1BW,QAAA,qBAAqB,yBA0BhC","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\nimport { groupPayloadInjectionFields } from '@/utils'\n\nimport { InjectionFieldService, InjectionFieldListProps, InjectionFieldServiceProps, InjectionFieldCreateProps, InjectionFieldReplaceProps } from \"@/services\"\nimport { schemaInjectionFieldReplacePayload, schemaInjectionFieldCreatePayload, schemaInjectionFieldDeletePayload } from \"@/schema/payload\";\nimport { QueryList } from \"@/schema/middleware/route\";\n\nconst getRootName = (requestInjectionFieldType: InjectionFieldServiceProps[\"injectionFieldType\"], toSingular: boolean) => {\n\n let rootName: any = ``\n\n switch (requestInjectionFieldType) {\n case \"user\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n case \"item\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n case \"document\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n // case \"repository\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n // case \"logistic\": rootName = toSingular ? \"injection_field\" : \"injection_fields\"; break;\n }\n\n return rootName\n}\n\n/** injection_field : create injection field */\nexport const createInjectionField = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n // const requestUserType = req.body.scope.target as InjectionFieldServiceProps[\"injectionFieldType\"]\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: \"user\"\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n let request = schemaInjectionFieldCreatePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action\n },\n payload: {\n injection_fields: reqPayload?.injection_fields.map((i: any) => ({\n field_module: `${i.field_module}`,\n field_ref: `${i.field_ref}`,\n field_key: `${i.field_key}`,\n field_type: `${i.field_type}`,\n }))\n }\n })\n\n response = await Promise.all(\n request.payload.injection_fields.map(i => {\n const payload: InjectionFieldCreateProps = {\n data: {\n ...i,\n is_multiple: false,\n merge_multiple_inline: false,\n multiple_count: false,\n },\n };\n\n return injectionFieldService.createInjectionField(payload);\n })\n );\n\n sendSuccess(res, response, `Injection Fields created successfully`, `injection_field`)\n\n } catch (error: any) {\n next(error);\n }\n};\n\n/** injection_fields : replace injection fields */\nexport const replaceInjectionFields = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n const requestInjectionFieldType = req.body.scope.target as InjectionFieldServiceProps[\"injectionFieldType\"]\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: requestInjectionFieldType\n })\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n let response: any = {}\n\n let request = schemaInjectionFieldReplacePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action,\n },\n payload: reqPayload\n })\n\n let groupInjectionFields: any = []\n\n if (requestInjectionFieldType === \"user\") {\n\n groupInjectionFields = groupPayloadInjectionFields(request.payload.injection_fields, {\n user: \"userId\",\n branch: \"branchId\",\n });\n\n }\n\n if (requestInjectionFieldType === \"item\") {\n\n groupInjectionFields = groupPayloadInjectionFields(request.payload.injection_fields, {}, {\n item: \"itemId\",\n product: \"productId\",\n category: \"categoryId\",\n brand: \"brandId\",\n uom: \"uomId\",\n });\n\n }\n\n if (requestInjectionFieldType === \"document\") {\n\n groupInjectionFields = groupPayloadInjectionFields(request.payload.injection_fields, {}, {\n document: \"documentId\",\n documentItem: \"documentItemId\"\n });\n\n }\n\n const responseAll = await Promise.all(\n groupInjectionFields.map(async (i: any) => {\n const payload = {\n injectionFieldType: requestInjectionFieldType,\n data: i as InjectionFieldReplaceProps[\"data\"],\n };\n\n try {\n return injectionFieldService.replaceInjectionField(payload);\n } catch (error) {\n // console.log('err', error)\n return error\n }\n\n })\n );\n\n // console.log('responseAll', JSON.stringify(responseAll))\n\n response = {\n [`${getRootName(requestInjectionFieldType, false)}`]: responseAll\n }\n\n sendSuccess(res, response, `Injection Fields(${requestInjectionFieldType}) replaced successfully`)\n\n } catch (err: any) {\n next(err);\n }\n};\n\n/** injection_field/definition/:id : get injection field (registered) */\nexport const getInjectionField = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n try {\n\n const { id } = req.params;\n const requestQuery = req.query as unknown as QueryList;\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: \"user\" // any\n })\n\n const data = await injectionFieldService.getInjectionField({ id: Number(id), datatypes: requestQuery.datatypes })\n\n return sendSuccess(res, data, \"Retrieved successfully\", `injection_field`);\n\n } catch (error: any) {\n next(error);\n }\n}\n\n/** injection_fields/injection_field : list injection fields registered */\nexport const listInjectionFields = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestQuery = req.query as unknown as QueryList;\n // const requestInjectionFieldType = req.params.locationType as InjectionFieldServiceProps[\"injectionFieldType\"];\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: \"document\" // any\n })\n\n let payload: InjectionFieldListProps = requestQuery\n\n payload = {\n ...requestQuery\n }\n\n\n const { data, total } = await injectionFieldService.listInjectionFields(payload);\n\n let response = {\n [`injection_fields`]: data,\n total,\n }\n\n return sendSuccess(res, response, \"Retrieved successfully\");\n\n } catch (error: any) {\n next(error);\n }\n};\n\n/** injection_fields/delete : delete injection fields */\nexport const deleteInjectionFields = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestInjectionFieldType = req.body.scope.target as InjectionFieldServiceProps[\"injectionFieldType\"]\n // const requestQuery = req.query as unknown as QueryList;\n // const requestFileId = Number(req.params.fileId)\n\n const request = schemaInjectionFieldDeletePayload.parse(req.body)\n\n const injectionFieldService = InjectionFieldService({\n ...getDefaultServiceProps(req),\n injectionFieldType: requestInjectionFieldType\n })\n\n const payload = {\n injectionFieldIds: request.payload.ids.map(i => BigInt(i))\n }\n\n const data = await injectionFieldService.removeInjectionFields(payload);\n\n return sendSuccess(res, data, \"Deleted\", `injection_fields`);\n\n } catch (error: any) {\n next(error);\n }\n};"]}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ // import {
3
+ // LogisticInjectionFieldModel,
4
+ // ModelLogisticInjectionFieldFields,
5
+ // } from "../../../models";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ // import { DefaultServiceProps } from "../../../utils";
8
+ // import { convertPayloadByTableSchema, validateModelFieldsWithData } from "../../../utils";
9
+ // type LogisticInjectionFieldMap = {
10
+ // transporter: {
11
+ // logistic: { logisticId: any };
12
+ // };
13
+ // };
14
+ // type LogisticInjectionFieldModule = keyof LogisticInjectionFieldMap;
15
+ // // type LogisticInjectionFieldRef<M extends LogisticInjectionFieldModule> = keyof LogisticInjectionFieldMap[M];
16
+ // export const logisticModulePrefixMap: Record<LogisticInjectionFieldModule, string> = {
17
+ // transporter: "tpt"
18
+ // };
19
+ // export const logisticRefPrefixMap: Record<"logistic", string> = {
20
+ // logistic: "lgt"
21
+ // };
22
+ // export type LogisticInjectionFieldModuleRef = {
23
+ // [M in LogisticInjectionFieldModule]: {
24
+ // [R in keyof LogisticInjectionFieldMap[M]]: {
25
+ // module: M;
26
+ // ref: R;
27
+ // } & LogisticInjectionFieldMap[M][R];
28
+ // }[keyof LogisticInjectionFieldMap[M]];
29
+ // }[LogisticInjectionFieldModule];
30
+ // export type LogisticInjectionFieldServiceProps = DefaultServiceProps & {};
31
+ // export type LogisticInjectionFieldRemoveProps = {
32
+ // ids: number[]
33
+ // };
34
+ // export type LogisticInjectionFieldReplaceProps = {
35
+ // data: LogisticInjectionFieldModuleRef & {
36
+ // fields: any
37
+ // }
38
+ // }
39
+ // const getReplacePayload = (data: LogisticInjectionFieldReplaceProps["data"]) => {
40
+ // let { module, ref, logisticId } = data
41
+ // let payload: Record<string, any> = {};
42
+ // payload = {
43
+ // ...payload,
44
+ // ...{
45
+ // [`${ModelLogisticInjectionFieldFields.field_module}`]: module,
46
+ // [`${ModelLogisticInjectionFieldFields.field_ref}`]: ref,
47
+ // }
48
+ // }
49
+ // if ("logisticId" in data) {
50
+ // payload = { ...payload, ...(data?.logisticId ? { [`${ModelLogisticInjectionFieldFields.logistic_id}`]: logisticId } : {}) }
51
+ // }
52
+ // // if ("branchId" in data) {
53
+ // // const branchId = data.branchId
54
+ // // payload = { ...payload, ...(data?.branchId ? { [`${ModelLogisticInjectionFieldFields.branch_id}`]: branchId } : {}) }
55
+ // // }
56
+ // // if ("memberId" in data) {
57
+ // // const memberId = data.memberId
58
+ // // payload = { ...payload, ...(data?.memberId ? { [`${ModelLogisticInjectionFieldFields.member_id}`]: memberId } : {}) }
59
+ // // }
60
+ // const rest = data.fields
61
+ // // apply dynamic prefix: refPrefix_modulePrefix_fieldKey
62
+ // const refPrefix = logisticRefPrefixMap[ref as keyof typeof logisticRefPrefixMap] ?? ref;
63
+ // const modulePrefix = logisticModulePrefixMap[module as LogisticInjectionFieldModule] ?? module;
64
+ // for (const [key, value] of Object.entries(rest)) {
65
+ // payload[`${refPrefix}_${modulePrefix}_${key}`] = value;
66
+ // }
67
+ // return payload
68
+ // }
69
+ // export const LogisticInjectionFieldService = (props: LogisticInjectionFieldServiceProps) => {
70
+ // const {
71
+ // ...rest
72
+ // } = props
73
+ // const logisticInjectionFieldModel = LogisticInjectionFieldModel({ ...rest })
74
+ // const replaceLogisticInjectionField = async ({ data }: LogisticInjectionFieldReplaceProps) => {
75
+ // const _data = getReplacePayload(data)
76
+ // if (!_data) {
77
+ // throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);
78
+ // }
79
+ // const where: Record<string, any> = {
80
+ // [ModelLogisticInjectionFieldFields.field_module]: data.module,
81
+ // [ModelLogisticInjectionFieldFields.field_ref]: data.ref,
82
+ // ...(data?.logisticId ? { [ModelLogisticInjectionFieldFields.logistic_id]: data.logisticId } : {}),
83
+ // };
84
+ // // Narrow: only include branchId if data.ref === "branch"
85
+ // // if (data.ref === "branch") {
86
+ // // where[ModelLogisticInjectionFieldFields.branch_id] = (data as Extract<LogisticInjectionFieldModuleRef, { ref: "branch" }>).branchId;
87
+ // // }
88
+ // let modelFields = await logisticInjectionFieldModel.getFields()
89
+ // let finalData = convertPayloadByTableSchema(_data, modelFields)
90
+ // // console.log('modelFields', modelFields)
91
+ // // console.log('finalData', finalData)
92
+ // // check the request fields are in the exactly schema
93
+ // const resultInvalidFields = validateModelFieldsWithData(modelFields, finalData)
94
+ // if (resultInvalidFields.length > 0) {
95
+ // throw Error(`Invalid injection fields: ${resultInvalidFields.join(", ")} (Request: ${Object.keys(finalData).join(", ")})`)
96
+ // }
97
+ // // check the record exists
98
+ // let exists = await logisticInjectionFieldModel.get({ where })
99
+ // let response: any = {}
100
+ // if (exists) { // update existing
101
+ // // remove unwanted to override
102
+ // delete finalData.field_module;
103
+ // delete finalData.field_ref;
104
+ // delete finalData.user_id;
105
+ // delete finalData.branch_id;
106
+ // response = await logisticInjectionFieldModel.update({ data: finalData, where, disableRollback: true })
107
+ // } else { // create new
108
+ // response = await logisticInjectionFieldModel.create({ data: finalData })
109
+ // }
110
+ // return response
111
+ // }
112
+ // return {
113
+ // replaceLogisticInjectionField
114
+ // }
115
+ // }
116
+ //# sourceMappingURL=LogisticInjectionFieldService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogisticInjectionFieldService.js","sourceRoot":"","sources":["../../../../src/services/injection_field/unuse/LogisticInjectionFieldService.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,mCAAmC;AACnC,yCAAyC;AACzC,qBAAqB;;AAErB,iDAAiD;AAEjD,sFAAsF;AAEtF,qCAAqC;AACrC,qBAAqB;AACrB,yCAAyC;AACzC,SAAS;AACT,KAAK;AAEL,uEAAuE;AACvE,kHAAkH;AAElH,yFAAyF;AACzF,yBAAyB;AACzB,KAAK;AAEL,oEAAoE;AACpE,sBAAsB;AACtB,KAAK;AAEL,kDAAkD;AAClD,6CAA6C;AAC7C,uDAAuD;AACvD,yBAAyB;AACzB,sBAAsB;AACtB,+CAA+C;AAC/C,6CAA6C;AAC7C,mCAAmC;AAEnC,6EAA6E;AAE7E,oDAAoD;AACpD,oBAAoB;AACpB,KAAK;AAEL,qDAAqD;AACrD,gDAAgD;AAChD,sBAAsB;AACtB,QAAQ;AACR,IAAI;AAEJ,oFAAoF;AAEpF,6CAA6C;AAE7C,6CAA6C;AAE7C,kBAAkB;AAClB,sBAAsB;AACtB,eAAe;AACf,6EAA6E;AAC7E,uEAAuE;AACvE,YAAY;AACZ,QAAQ;AAER,kCAAkC;AAClC,sIAAsI;AACtI,QAAQ;AAER,mCAAmC;AACnC,4CAA4C;AAC5C,mIAAmI;AACnI,WAAW;AAEX,mCAAmC;AACnC,4CAA4C;AAC5C,mIAAmI;AACnI,WAAW;AAEX,+BAA+B;AAE/B,+DAA+D;AAC/D,+FAA+F;AAC/F,sGAAsG;AAEtG,yDAAyD;AACzD,kEAAkE;AAClE,QAAQ;AAER,qBAAqB;AAErB,IAAI;AAEJ,gGAAgG;AAEhG,cAAc;AACd,kBAAkB;AAClB,gBAAgB;AAEhB,mFAAmF;AAEnF,sGAAsG;AAEtG,gDAAgD;AAEhD,wBAAwB;AACxB,mFAAmF;AACnF,YAAY;AAEZ,+CAA+C;AAC/C,6EAA6E;AAC7E,uEAAuE;AACvE,iHAAiH;AACjH,aAAa;AAEb,oEAAoE;AACpE,0CAA0C;AAC1C,sJAAsJ;AACtJ,eAAe;AAEf,0EAA0E;AAE1E,0EAA0E;AAE1E,qDAAqD;AACrD,iDAAiD;AAGjD,gEAAgE;AAChE,0FAA0F;AAE1F,gDAAgD;AAChD,yIAAyI;AACzI,YAAY;AAEZ,qCAAqC;AACrC,wEAAwE;AAExE,iCAAiC;AAEjC,2CAA2C;AAE3C,6CAA6C;AAC7C,6CAA6C;AAC7C,0CAA0C;AAC1C,wCAAwC;AACxC,0CAA0C;AAC1C,qHAAqH;AAErH,iCAAiC;AACjC,uFAAuF;AACvF,YAAY;AAEZ,0BAA0B;AAC1B,QAAQ;AAER,eAAe;AACf,wCAAwC;AACxC,QAAQ;AAER,IAAI","sourcesContent":["// import {\n// LogisticInjectionFieldModel,\n// ModelLogisticInjectionFieldFields,\n// } from \"@/models\";\n\n// import { DefaultServiceProps } from \"@/utils\";\n\n// import { convertPayloadByTableSchema, validateModelFieldsWithData } from \"@/utils\";\n\n// type LogisticInjectionFieldMap = {\n// transporter: {\n// logistic: { logisticId: any };\n// };\n// };\n\n// type LogisticInjectionFieldModule = keyof LogisticInjectionFieldMap;\n// // type LogisticInjectionFieldRef<M extends LogisticInjectionFieldModule> = keyof LogisticInjectionFieldMap[M];\n\n// export const logisticModulePrefixMap: Record<LogisticInjectionFieldModule, string> = {\n// transporter: \"tpt\"\n// };\n\n// export const logisticRefPrefixMap: Record<\"logistic\", string> = {\n// logistic: \"lgt\"\n// };\n\n// export type LogisticInjectionFieldModuleRef = {\n// [M in LogisticInjectionFieldModule]: {\n// [R in keyof LogisticInjectionFieldMap[M]]: {\n// module: M;\n// ref: R;\n// } & LogisticInjectionFieldMap[M][R];\n// }[keyof LogisticInjectionFieldMap[M]];\n// }[LogisticInjectionFieldModule];\n\n// export type LogisticInjectionFieldServiceProps = DefaultServiceProps & {};\n\n// export type LogisticInjectionFieldRemoveProps = {\n// ids: number[]\n// };\n\n// export type LogisticInjectionFieldReplaceProps = {\n// data: LogisticInjectionFieldModuleRef & {\n// fields: any\n// }\n// }\n\n// const getReplacePayload = (data: LogisticInjectionFieldReplaceProps[\"data\"]) => {\n\n// let { module, ref, logisticId } = data\n\n// let payload: Record<string, any> = {};\n\n// payload = {\n// ...payload,\n// ...{\n// [`${ModelLogisticInjectionFieldFields.field_module}`]: module,\n// [`${ModelLogisticInjectionFieldFields.field_ref}`]: ref,\n// }\n// }\n\n// if (\"logisticId\" in data) {\n// payload = { ...payload, ...(data?.logisticId ? { [`${ModelLogisticInjectionFieldFields.logistic_id}`]: logisticId } : {}) }\n// }\n\n// // if (\"branchId\" in data) {\n// // const branchId = data.branchId\n// // payload = { ...payload, ...(data?.branchId ? { [`${ModelLogisticInjectionFieldFields.branch_id}`]: branchId } : {}) }\n// // }\n\n// // if (\"memberId\" in data) {\n// // const memberId = data.memberId\n// // payload = { ...payload, ...(data?.memberId ? { [`${ModelLogisticInjectionFieldFields.member_id}`]: memberId } : {}) }\n// // }\n\n// const rest = data.fields\n\n// // apply dynamic prefix: refPrefix_modulePrefix_fieldKey\n// const refPrefix = logisticRefPrefixMap[ref as keyof typeof logisticRefPrefixMap] ?? ref;\n// const modulePrefix = logisticModulePrefixMap[module as LogisticInjectionFieldModule] ?? module;\n\n// for (const [key, value] of Object.entries(rest)) {\n// payload[`${refPrefix}_${modulePrefix}_${key}`] = value;\n// }\n\n// return payload\n\n// }\n\n// export const LogisticInjectionFieldService = (props: LogisticInjectionFieldServiceProps) => {\n\n// const {\n// ...rest\n// } = props\n\n// const logisticInjectionFieldModel = LogisticInjectionFieldModel({ ...rest })\n\n// const replaceLogisticInjectionField = async ({ data }: LogisticInjectionFieldReplaceProps) => {\n\n// const _data = getReplacePayload(data)\n\n// if (!_data) {\n// throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);\n// }\n\n// const where: Record<string, any> = {\n// [ModelLogisticInjectionFieldFields.field_module]: data.module,\n// [ModelLogisticInjectionFieldFields.field_ref]: data.ref,\n// ...(data?.logisticId ? { [ModelLogisticInjectionFieldFields.logistic_id]: data.logisticId } : {}),\n// };\n\n// // Narrow: only include branchId if data.ref === \"branch\"\n// // if (data.ref === \"branch\") {\n// // where[ModelLogisticInjectionFieldFields.branch_id] = (data as Extract<LogisticInjectionFieldModuleRef, { ref: \"branch\" }>).branchId;\n// // }\n\n// let modelFields = await logisticInjectionFieldModel.getFields()\n\n// let finalData = convertPayloadByTableSchema(_data, modelFields)\n\n// // console.log('modelFields', modelFields)\n// // console.log('finalData', finalData)\n\n\n// // check the request fields are in the exactly schema\n// const resultInvalidFields = validateModelFieldsWithData(modelFields, finalData)\n\n// if (resultInvalidFields.length > 0) {\n// throw Error(`Invalid injection fields: ${resultInvalidFields.join(\", \")} (Request: ${Object.keys(finalData).join(\", \")})`)\n// }\n\n// // check the record exists\n// let exists = await logisticInjectionFieldModel.get({ where })\n\n// let response: any = {}\n\n// if (exists) { // update existing\n\n// // remove unwanted to override\n// delete finalData.field_module;\n// delete finalData.field_ref;\n// delete finalData.user_id;\n// delete finalData.branch_id;\n// response = await logisticInjectionFieldModel.update({ data: finalData, where, disableRollback: true })\n\n// } else { // create new\n// response = await logisticInjectionFieldModel.create({ data: finalData })\n// }\n\n// return response\n// }\n\n// return {\n// replaceLogisticInjectionField\n// }\n\n// }\n\n\n"]}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ // import {
3
+ // RepositoryInjectionFieldModel,
4
+ // ModelRepositoryInjectionFieldFields,
5
+ // } from "../../../models";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ // import { DefaultServiceProps } from "../../../utils";
8
+ // import { convertPayloadByTableSchema, validateModelFieldsWithData } from "../../../utils";
9
+ // type RepositoryInjectionFieldMap = {
10
+ // container: {
11
+ // repository: { repositoryId: any };
12
+ // // repository_item: { repositoryId: any; };
13
+ // },
14
+ // pallet: {
15
+ // repository: { repositoryId: any };
16
+ // // repository_item: { repositoryId: any; };
17
+ // },
18
+ // carton: {
19
+ // repository: { repositoryId: any };
20
+ // // repository_item: { repositoryId: any; };
21
+ // },
22
+ // package: {
23
+ // repository: { repositoryId: any };
24
+ // // repository_item: { repositoryId: any; };
25
+ // },
26
+ // package_item: {
27
+ // repository: { repositoryId: any };
28
+ // // repository_item: { repositoryId: any; };
29
+ // };
30
+ // };
31
+ // type RepositoryInjectionFieldModule = keyof RepositoryInjectionFieldMap;
32
+ // // type RepositoryInjectionFieldRef<M extends RepositoryInjectionFieldModule> = keyof RepositoryInjectionFieldMap[M];
33
+ // export const repositoryModulePrefixMap: Record<RepositoryInjectionFieldModule, string> = {
34
+ // container: "cont",
35
+ // pallet: "pl",
36
+ // carton: "cn",
37
+ // package: "pk",
38
+ // package_item: "pki"
39
+ // };
40
+ // // export const repositoryRefPrefixMap: Record<"repository" | "repository_item", string> = {
41
+ // export const repositoryRefPrefixMap: Record<"repository", string> = {
42
+ // repository: "repo",
43
+ // // repository_item: "repo_item",
44
+ // };
45
+ // export type RepositoryInjectionFieldModuleRef = {
46
+ // [M in RepositoryInjectionFieldModule]: {
47
+ // [R in keyof RepositoryInjectionFieldMap[M]]: {
48
+ // module: M;
49
+ // ref: R;
50
+ // } & RepositoryInjectionFieldMap[M][R];
51
+ // }[keyof RepositoryInjectionFieldMap[M]];
52
+ // }[RepositoryInjectionFieldModule];
53
+ // export type RepositoryInjectionFieldServiceProps = DefaultServiceProps & {};
54
+ // export type RepositoryInjectionFieldRemoveProps = {
55
+ // ids: number[]
56
+ // };
57
+ // export type RepositoryInjectionFieldReplaceProps = {
58
+ // data: RepositoryInjectionFieldModuleRef & {
59
+ // fields: any
60
+ // }
61
+ // }
62
+ // const getReplacePayload = (data: RepositoryInjectionFieldReplaceProps["data"]) => {
63
+ // let { module, ref, repositoryId } = data
64
+ // let payload: Record<string, any> = {};
65
+ // payload = {
66
+ // ...payload,
67
+ // ...{
68
+ // [`${ModelRepositoryInjectionFieldFields.field_module}`]: module,
69
+ // [`${ModelRepositoryInjectionFieldFields.field_ref}`]: ref,
70
+ // }
71
+ // }
72
+ // if ("repositoryId" in data) {
73
+ // payload = { ...payload, ...(data?.repositoryId ? { [`${ModelRepositoryInjectionFieldFields.repository_id}`]: repositoryId } : {}) }
74
+ // }
75
+ // const rest = data.fields
76
+ // // apply dynamic prefix: refPrefix_modulePrefix_fieldKey
77
+ // const refPrefix = repositoryRefPrefixMap[ref as keyof typeof repositoryRefPrefixMap] ?? ref;
78
+ // const modulePrefix = repositoryModulePrefixMap[module as RepositoryInjectionFieldModule] ?? module;
79
+ // for (const [key, value] of Object.entries(rest)) {
80
+ // payload[`${refPrefix}_${modulePrefix}_${key}`] = value;
81
+ // }
82
+ // return payload
83
+ // }
84
+ // export const RepositoryInjectionFieldService = (props: RepositoryInjectionFieldServiceProps) => {
85
+ // const {
86
+ // ...rest
87
+ // } = props
88
+ // const repositoryInjectionFieldModel = RepositoryInjectionFieldModel({ ...rest })
89
+ // const replaceRepositoryInjectionField = async ({ data }: RepositoryInjectionFieldReplaceProps) => {
90
+ // const _data = getReplacePayload(data)
91
+ // if (!_data) {
92
+ // throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);
93
+ // }
94
+ // const where: Record<string, any> = {
95
+ // [ModelRepositoryInjectionFieldFields.field_module]: data.module,
96
+ // [ModelRepositoryInjectionFieldFields.field_ref]: data.ref,
97
+ // ...(data?.repositoryId ? { [ModelRepositoryInjectionFieldFields.repository_id]: data.repositoryId } : {}),
98
+ // };
99
+ // // Narrow: only include branchId if data.ref === "branch"
100
+ // // if (data.ref === "branch") {
101
+ // // where[ModelRepositoryInjectionFieldFields.branch_id] = (data as Extract<RepositoryInjectionFieldModuleRef, { ref: "branch" }>).branchId;
102
+ // // }
103
+ // let modelFields = await repositoryInjectionFieldModel.getFields()
104
+ // let finalData = convertPayloadByTableSchema(_data, modelFields)
105
+ // // console.log('modelFields', modelFields)
106
+ // // console.log('finalData', finalData)
107
+ // // check the request fields are in the exactly schema
108
+ // const resultInvalidFields = validateModelFieldsWithData(modelFields, finalData)
109
+ // if (resultInvalidFields.length > 0) {
110
+ // throw Error(`Invalid injection fields: ${resultInvalidFields.join(", ")} (Request: ${Object.keys(finalData).join(", ")})`)
111
+ // }
112
+ // // check the record exists
113
+ // let exists = await repositoryInjectionFieldModel.get({ where })
114
+ // let response: any = {}
115
+ // if (exists) { // update existing
116
+ // // remove unwanted to override
117
+ // delete finalData.field_module;
118
+ // delete finalData.field_ref;
119
+ // delete finalData.repository_id;
120
+ // delete finalData.repository_item_id;
121
+ // response = await repositoryInjectionFieldModel.update({ data: finalData, where, disableRollback: true })
122
+ // } else { // create new
123
+ // response = await repositoryInjectionFieldModel.create({ data: finalData })
124
+ // }
125
+ // return response
126
+ // }
127
+ // return {
128
+ // replaceRepositoryInjectionField
129
+ // }
130
+ // }
131
+ //# sourceMappingURL=RepositoryInjectionFieldService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepositoryInjectionFieldService.js","sourceRoot":"","sources":["../../../../src/services/injection_field/unuse/RepositoryInjectionFieldService.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,qCAAqC;AACrC,2CAA2C;AAC3C,qBAAqB;;AAErB,iDAAiD;AAEjD,sFAAsF;AAEtF,uCAAuC;AACvC,mBAAmB;AACnB,6CAA6C;AAC7C,sDAAsD;AACtD,SAAS;AACT,gBAAgB;AAChB,6CAA6C;AAC7C,sDAAsD;AACtD,SAAS;AACT,gBAAgB;AAChB,6CAA6C;AAC7C,sDAAsD;AACtD,SAAS;AACT,iBAAiB;AACjB,6CAA6C;AAC7C,sDAAsD;AACtD,SAAS;AACT,sBAAsB;AACtB,6CAA6C;AAC7C,sDAAsD;AACtD,SAAS;AACT,KAAK;AAEL,2EAA2E;AAC3E,wHAAwH;AAExH,6FAA6F;AAC7F,yBAAyB;AACzB,oBAAoB;AACpB,oBAAoB;AACpB,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AAEL,+FAA+F;AAC/F,wEAAwE;AACxE,0BAA0B;AAC1B,uCAAuC;AACvC,KAAK;AAEL,oDAAoD;AACpD,+CAA+C;AAC/C,yDAAyD;AACzD,yBAAyB;AACzB,sBAAsB;AACtB,iDAAiD;AACjD,+CAA+C;AAC/C,qCAAqC;AAErC,+EAA+E;AAE/E,sDAAsD;AACtD,oBAAoB;AACpB,KAAK;AAEL,uDAAuD;AACvD,kDAAkD;AAClD,sBAAsB;AACtB,QAAQ;AACR,IAAI;AAEJ,sFAAsF;AAEtF,+CAA+C;AAE/C,6CAA6C;AAE7C,kBAAkB;AAClB,sBAAsB;AACtB,eAAe;AACf,+EAA+E;AAC/E,yEAAyE;AACzE,YAAY;AACZ,QAAQ;AAER,oCAAoC;AACpC,8IAA8I;AAC9I,QAAQ;AAER,+BAA+B;AAE/B,+DAA+D;AAC/D,mGAAmG;AACnG,0GAA0G;AAE1G,yDAAyD;AACzD,kEAAkE;AAClE,QAAQ;AAER,qBAAqB;AAErB,IAAI;AAEJ,oGAAoG;AAEpG,cAAc;AACd,kBAAkB;AAClB,gBAAgB;AAEhB,uFAAuF;AAEvF,0GAA0G;AAE1G,gDAAgD;AAEhD,wBAAwB;AACxB,mFAAmF;AACnF,YAAY;AAEZ,+CAA+C;AAC/C,+EAA+E;AAC/E,yEAAyE;AACzE,yHAAyH;AACzH,aAAa;AAEb,oEAAoE;AACpE,0CAA0C;AAC1C,0JAA0J;AAC1J,eAAe;AAEf,4EAA4E;AAE5E,0EAA0E;AAE1E,qDAAqD;AACrD,iDAAiD;AAGjD,gEAAgE;AAChE,0FAA0F;AAE1F,gDAAgD;AAChD,yIAAyI;AACzI,YAAY;AAEZ,qCAAqC;AACrC,0EAA0E;AAE1E,iCAAiC;AAEjC,2CAA2C;AAE3C,6CAA6C;AAC7C,6CAA6C;AAC7C,0CAA0C;AAC1C,8CAA8C;AAC9C,mDAAmD;AAEnD,uHAAuH;AAEvH,iCAAiC;AACjC,yFAAyF;AACzF,YAAY;AAEZ,0BAA0B;AAC1B,QAAQ;AAER,eAAe;AACf,0CAA0C;AAC1C,QAAQ;AAER,IAAI","sourcesContent":["// import {\n// RepositoryInjectionFieldModel,\n// ModelRepositoryInjectionFieldFields,\n// } from \"@/models\";\n\n// import { DefaultServiceProps } from \"@/utils\";\n\n// import { convertPayloadByTableSchema, validateModelFieldsWithData } from \"@/utils\";\n\n// type RepositoryInjectionFieldMap = {\n// container: {\n// repository: { repositoryId: any };\n// // repository_item: { repositoryId: any; };\n// },\n// pallet: {\n// repository: { repositoryId: any };\n// // repository_item: { repositoryId: any; };\n// },\n// carton: {\n// repository: { repositoryId: any };\n// // repository_item: { repositoryId: any; };\n// },\n// package: {\n// repository: { repositoryId: any };\n// // repository_item: { repositoryId: any; };\n// },\n// package_item: {\n// repository: { repositoryId: any };\n// // repository_item: { repositoryId: any; };\n// };\n// };\n\n// type RepositoryInjectionFieldModule = keyof RepositoryInjectionFieldMap;\n// // type RepositoryInjectionFieldRef<M extends RepositoryInjectionFieldModule> = keyof RepositoryInjectionFieldMap[M];\n\n// export const repositoryModulePrefixMap: Record<RepositoryInjectionFieldModule, string> = {\n// container: \"cont\",\n// pallet: \"pl\",\n// carton: \"cn\",\n// package: \"pk\",\n// package_item: \"pki\"\n// };\n\n// // export const repositoryRefPrefixMap: Record<\"repository\" | \"repository_item\", string> = {\n// export const repositoryRefPrefixMap: Record<\"repository\", string> = {\n// repository: \"repo\",\n// // repository_item: \"repo_item\",\n// };\n\n// export type RepositoryInjectionFieldModuleRef = {\n// [M in RepositoryInjectionFieldModule]: {\n// [R in keyof RepositoryInjectionFieldMap[M]]: {\n// module: M;\n// ref: R;\n// } & RepositoryInjectionFieldMap[M][R];\n// }[keyof RepositoryInjectionFieldMap[M]];\n// }[RepositoryInjectionFieldModule];\n\n// export type RepositoryInjectionFieldServiceProps = DefaultServiceProps & {};\n\n// export type RepositoryInjectionFieldRemoveProps = {\n// ids: number[]\n// };\n\n// export type RepositoryInjectionFieldReplaceProps = {\n// data: RepositoryInjectionFieldModuleRef & {\n// fields: any\n// }\n// }\n\n// const getReplacePayload = (data: RepositoryInjectionFieldReplaceProps[\"data\"]) => {\n\n// let { module, ref, repositoryId } = data\n\n// let payload: Record<string, any> = {};\n\n// payload = {\n// ...payload,\n// ...{\n// [`${ModelRepositoryInjectionFieldFields.field_module}`]: module,\n// [`${ModelRepositoryInjectionFieldFields.field_ref}`]: ref,\n// }\n// }\n\n// if (\"repositoryId\" in data) {\n// payload = { ...payload, ...(data?.repositoryId ? { [`${ModelRepositoryInjectionFieldFields.repository_id}`]: repositoryId } : {}) }\n// }\n\n// const rest = data.fields\n\n// // apply dynamic prefix: refPrefix_modulePrefix_fieldKey\n// const refPrefix = repositoryRefPrefixMap[ref as keyof typeof repositoryRefPrefixMap] ?? ref;\n// const modulePrefix = repositoryModulePrefixMap[module as RepositoryInjectionFieldModule] ?? module;\n\n// for (const [key, value] of Object.entries(rest)) {\n// payload[`${refPrefix}_${modulePrefix}_${key}`] = value;\n// }\n\n// return payload\n\n// }\n\n// export const RepositoryInjectionFieldService = (props: RepositoryInjectionFieldServiceProps) => {\n\n// const {\n// ...rest\n// } = props\n\n// const repositoryInjectionFieldModel = RepositoryInjectionFieldModel({ ...rest })\n\n// const replaceRepositoryInjectionField = async ({ data }: RepositoryInjectionFieldReplaceProps) => {\n\n// const _data = getReplacePayload(data)\n\n// if (!_data) {\n// throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);\n// }\n\n// const where: Record<string, any> = {\n// [ModelRepositoryInjectionFieldFields.field_module]: data.module,\n// [ModelRepositoryInjectionFieldFields.field_ref]: data.ref,\n// ...(data?.repositoryId ? { [ModelRepositoryInjectionFieldFields.repository_id]: data.repositoryId } : {}),\n// };\n\n// // Narrow: only include branchId if data.ref === \"branch\"\n// // if (data.ref === \"branch\") {\n// // where[ModelRepositoryInjectionFieldFields.branch_id] = (data as Extract<RepositoryInjectionFieldModuleRef, { ref: \"branch\" }>).branchId;\n// // }\n\n// let modelFields = await repositoryInjectionFieldModel.getFields()\n\n// let finalData = convertPayloadByTableSchema(_data, modelFields)\n\n// // console.log('modelFields', modelFields)\n// // console.log('finalData', finalData)\n\n\n// // check the request fields are in the exactly schema\n// const resultInvalidFields = validateModelFieldsWithData(modelFields, finalData)\n\n// if (resultInvalidFields.length > 0) {\n// throw Error(`Invalid injection fields: ${resultInvalidFields.join(\", \")} (Request: ${Object.keys(finalData).join(\", \")})`)\n// }\n\n// // check the record exists\n// let exists = await repositoryInjectionFieldModel.get({ where })\n\n// let response: any = {}\n\n// if (exists) { // update existing\n\n// // remove unwanted to override\n// delete finalData.field_module;\n// delete finalData.field_ref;\n// delete finalData.repository_id;\n// delete finalData.repository_item_id;\n\n// response = await repositoryInjectionFieldModel.update({ data: finalData, where, disableRollback: true })\n\n// } else { // create new\n// response = await repositoryInjectionFieldModel.create({ data: finalData })\n// }\n\n// return response\n// }\n\n// return {\n// replaceRepositoryInjectionField\n// }\n\n// }\n\n\n"]}
@@ -16,8 +16,9 @@ const validateWithSchema = (schema, source = "params") => (req, res, next) => {
16
16
  (0, utils_1.sendError)(res, "BAD_REQUEST", `Invalid ${source}`, "", `${JSON.stringify(formattedErrors)}`, utils_1.HTTP_STATUS.BAD_REQUEST);
17
17
  return;
18
18
  }
19
- // overwrite request object with parsed+typed data
20
- req[source] = result.data;
19
+ // overwrite request object with parsed+typed data (only matched the validation key)
20
+ // (req as any)[source] = result.data;
21
+ req[source] = { ...req[source], ...result.data };
21
22
  // if (source === "query") {
22
23
  // req.query = result.data as any;
23
24
  // } else {
@@ -1 +1 @@
1
- {"version":3,"file":"schemaUtils.js","sourceRoot":"","sources":["../../src/utils/schemaUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\nimport { z, ZodSchema } from \"zod\";\nimport { sendError, HTTP_STATUS } from \"@/utils\";\nimport { getFormattedZodErrors } from \"@/utils\";\n\n/**\n * Creates a validation middleware from a given Zod schema.\n * @param schema Zod schema to validate against\n * @param source where to validate from (default: \"params\")\n */\nexport const validateWithSchema = (\n schema: ZodSchema,\n source: \"params\" | \"query\" | \"body\" = \"params\"\n) => (req: Request, res: Response, next: NextFunction): void => {\n\n const result = schema.safeParse(req[source]);\n\n if (!result.success) {\n const formattedErrors = getFormattedZodErrors(result.error);\n\n sendError(\n res,\n \"BAD_REQUEST\",\n `Invalid ${source}`,\n \"\",\n `${JSON.stringify(formattedErrors)}`,\n HTTP_STATUS.BAD_REQUEST\n );\n return;\n }\n\n // overwrite request object with parsed+typed data\n (req as any)[source] = result.data;\n\n // if (source === \"query\") {\n // req.query = result.data as any;\n // } else {\n // req.params = result.data as any;\n // }\n\n next();\n};\n\n/**\n * Middleware to validate multiple schemas in order.\n * @param schemas Array of tuples: [ZodSchema, source]\n */\nexport const validateMultipleSchemas = (\n schemas: [ZodSchema, \"params\" | \"query\" | \"body\"][]\n) => {\n return (req: Request, res: Response, next: NextFunction) => {\n let i = 0;\n\n const runNext = () => {\n if (i >= schemas.length) return next(); // all schemas validated\n\n const [schema, source] = schemas[i];\n i++;\n\n validateWithSchema(schema, source)(req, res, (err) => {\n if (err) return; // already handled by validateWithSchema\n runNext(); // validate next schema\n });\n };\n\n runNext();\n };\n};\n\n/**\n * Convert a payload object based on a table schema.\n * Automatically converts strings to number, boolean, Date, JSON if needed.\n */\nexport const convertPayloadByTableSchema = (\n payload: Record<string, any>,\n tableSchema: { name: string; type: string }[]\n): Record<string, any> => {\n const columnTypeMap = Object.fromEntries(\n tableSchema.map(c => [c.name, c.type])\n );\n\n const numericTypes = ['bigint', 'integer', 'smallint', 'numeric', 'decimal'];\n\n const result: Record<string, any> = { ...payload };\n\n for (const [key, value] of Object.entries(payload)) {\n const columnType = columnTypeMap[key];\n if (!columnType || value === null || value === undefined) continue;\n\n switch (columnType) {\n case 'bigint':\n case 'integer':\n case 'smallint':\n case 'numeric':\n case 'decimal':\n result[key] = Number(value);\n break;\n case 'boolean':\n result[key] = value === 'true' || value === '1';\n break;\n case 'timestamp without time zone':\n case 'timestamp with time zone':\n case 'date':\n result[key] = new Date(value);\n break;\n case 'json':\n case 'jsonb':\n try {\n result[key] = typeof value === 'string' ? JSON.parse(value) : value;\n } catch {\n result[key] = value;\n }\n break;\n default:\n // leave as string\n result[key] = value;\n break;\n }\n }\n\n return result;\n}\n\n// check the modelFields with data exists\nexport const validateModelFieldsWithData = (modelFields: any, data: any) => {\n let resultInvalidFields: string[] = []\n\n let modelFieldKeys = modelFields.map((i: any) => i.name)\n\n Object.keys(data).forEach(i => {\n let check = modelFieldKeys.includes(i)\n if (check === false) {\n resultInvalidFields.push(i)\n }\n })\n\n return resultInvalidFields\n}\n\n/**\n * Factory function to create a reusable \"scope\" schema with global validation.\n *\n * @param targetValue - the literal value for the \"target\" field in the scope\n * @returns Zod schema for the scope object with refine logic applied\n */\nexport const createPublicScopeSchema = (targetValue: string) => {\n return z.object({\n // Optional fields, but we ensure they exist for refine check\n isOperator: z.boolean(),\n accountId: z.string().default(\"\"), // default to empty string\n accountCode: z.string().default(\"\"), // default to empty string\n\n // Purpose-specific fields\n target: z.literal(targetValue),\n action: z.string(),\n })\n .refine(\n (data) => (data.accountId?.trim() || data.accountCode?.trim()),\n {\n message: \"Either accountId or accountCode in scope must be provided\",\n path: [], // attach error to the root of the object\n }\n )\n .refine((data) => typeof data.isOperator === \"boolean\", {\n message: \"isOperator must be provided and be a boolean\",\n path: [\"isOperator\"], // attach error to the field\n });\n};\n\n/**\n * Generic helper to extract and normalize scope from a Node.js request body.\n * Ensures accountId and accountCode exist (default to empty string if missing).\n *\n * @param body - the full request body from Node.js (req.body)\n * @returns object compatible with your zod scope schema\n */\nexport const normalizePublicScopeFromBody = (body: any) => {\n const reqScope = body?.scope ?? {};\n return {\n target: reqScope.target,\n action: reqScope.action,\n isOperator: reqScope?.is_operator ?? \"\", // default to empty string if missing\n accountId: reqScope?.account_id ?? \"\", // default to empty string if missing\n accountCode: reqScope?.account_code ?? \"\", // default to empty string if missing\n };\n};"]}
1
+ {"version":3,"file":"schemaUtils.js","sourceRoot":"","sources":["../../src/utils/schemaUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\nimport { z, ZodSchema } from \"zod\";\nimport { sendError, HTTP_STATUS } from \"@/utils\";\nimport { getFormattedZodErrors } from \"@/utils\";\n\n/**\n * Creates a validation middleware from a given Zod schema.\n * @param schema Zod schema to validate against\n * @param source where to validate from (default: \"params\")\n */\nexport const validateWithSchema = (\n schema: ZodSchema,\n source: \"params\" | \"query\" | \"body\" = \"params\"\n) => (req: Request, res: Response, next: NextFunction): void => {\n\n const result = schema.safeParse(req[source]);\n\n if (!result.success) {\n const formattedErrors = getFormattedZodErrors(result.error);\n\n sendError(\n res,\n \"BAD_REQUEST\",\n `Invalid ${source}`,\n \"\",\n `${JSON.stringify(formattedErrors)}`,\n HTTP_STATUS.BAD_REQUEST\n );\n return;\n }\n\n // overwrite request object with parsed+typed data (only matched the validation key)\n // (req as any)[source] = result.data;\n (req as any)[source] = { ...req[source], ...result.data };\n\n // if (source === \"query\") {\n // req.query = result.data as any;\n // } else {\n // req.params = result.data as any;\n // }\n\n next();\n};\n\n/**\n * Middleware to validate multiple schemas in order.\n * @param schemas Array of tuples: [ZodSchema, source]\n */\nexport const validateMultipleSchemas = (\n schemas: [ZodSchema, \"params\" | \"query\" | \"body\"][]\n) => {\n return (req: Request, res: Response, next: NextFunction) => {\n let i = 0;\n\n const runNext = () => {\n if (i >= schemas.length) return next(); // all schemas validated\n\n const [schema, source] = schemas[i];\n i++;\n\n validateWithSchema(schema, source)(req, res, (err) => {\n if (err) return; // already handled by validateWithSchema\n runNext(); // validate next schema\n });\n };\n\n runNext();\n };\n};\n\n/**\n * Convert a payload object based on a table schema.\n * Automatically converts strings to number, boolean, Date, JSON if needed.\n */\nexport const convertPayloadByTableSchema = (\n payload: Record<string, any>,\n tableSchema: { name: string; type: string }[]\n): Record<string, any> => {\n const columnTypeMap = Object.fromEntries(\n tableSchema.map(c => [c.name, c.type])\n );\n\n const numericTypes = ['bigint', 'integer', 'smallint', 'numeric', 'decimal'];\n\n const result: Record<string, any> = { ...payload };\n\n for (const [key, value] of Object.entries(payload)) {\n const columnType = columnTypeMap[key];\n if (!columnType || value === null || value === undefined) continue;\n\n switch (columnType) {\n case 'bigint':\n case 'integer':\n case 'smallint':\n case 'numeric':\n case 'decimal':\n result[key] = Number(value);\n break;\n case 'boolean':\n result[key] = value === 'true' || value === '1';\n break;\n case 'timestamp without time zone':\n case 'timestamp with time zone':\n case 'date':\n result[key] = new Date(value);\n break;\n case 'json':\n case 'jsonb':\n try {\n result[key] = typeof value === 'string' ? JSON.parse(value) : value;\n } catch {\n result[key] = value;\n }\n break;\n default:\n // leave as string\n result[key] = value;\n break;\n }\n }\n\n return result;\n}\n\n// check the modelFields with data exists\nexport const validateModelFieldsWithData = (modelFields: any, data: any) => {\n let resultInvalidFields: string[] = []\n\n let modelFieldKeys = modelFields.map((i: any) => i.name)\n\n Object.keys(data).forEach(i => {\n let check = modelFieldKeys.includes(i)\n if (check === false) {\n resultInvalidFields.push(i)\n }\n })\n\n return resultInvalidFields\n}\n\n/**\n * Factory function to create a reusable \"scope\" schema with global validation.\n *\n * @param targetValue - the literal value for the \"target\" field in the scope\n * @returns Zod schema for the scope object with refine logic applied\n */\nexport const createPublicScopeSchema = (targetValue: string) => {\n return z.object({\n // Optional fields, but we ensure they exist for refine check\n isOperator: z.boolean(),\n accountId: z.string().default(\"\"), // default to empty string\n accountCode: z.string().default(\"\"), // default to empty string\n\n // Purpose-specific fields\n target: z.literal(targetValue),\n action: z.string(),\n })\n .refine(\n (data) => (data.accountId?.trim() || data.accountCode?.trim()),\n {\n message: \"Either accountId or accountCode in scope must be provided\",\n path: [], // attach error to the root of the object\n }\n )\n .refine((data) => typeof data.isOperator === \"boolean\", {\n message: \"isOperator must be provided and be a boolean\",\n path: [\"isOperator\"], // attach error to the field\n });\n};\n\n/**\n * Generic helper to extract and normalize scope from a Node.js request body.\n * Ensures accountId and accountCode exist (default to empty string if missing).\n *\n * @param body - the full request body from Node.js (req.body)\n * @returns object compatible with your zod scope schema\n */\nexport const normalizePublicScopeFromBody = (body: any) => {\n const reqScope = body?.scope ?? {};\n return {\n target: reqScope.target,\n action: reqScope.action,\n isOperator: reqScope?.is_operator ?? \"\", // default to empty string if missing\n accountId: reqScope?.account_id ?? \"\", // default to empty string if missing\n accountCode: reqScope?.account_code ?? \"\", // default to empty string if missing\n };\n};"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storemw-core-api",
3
- "version": "1.0.179",
3
+ "version": "1.0.180",
4
4
  "description": "Storemw Core Api",
5
5
  "main": "dist/app.js",
6
6
  "types": "dist/app.d.ts",
@@ -659,6 +659,51 @@ model document_profiles {
659
659
  country_id BigInt? @default(0)
660
660
  }
661
661
 
662
+ model document_items {
663
+ document_item_id BigInt @id @default(autoincrement())
664
+ createdatetime DateTime? @db.Timestamptz(6)
665
+ createuserid BigInt @default(0)
666
+ updatedatetime DateTime? @db.Timestamptz(6)
667
+ updateuserid BigInt @default(0)
668
+ isdelete Boolean @default(false)
669
+ istrash Boolean @default(false)
670
+ accountid BigInt @default(0)
671
+ document_id BigInt @default(0)
672
+ item_id BigInt @default(0)
673
+ item_name String? @db.VarChar(255)
674
+ code String? @db.VarChar(256)
675
+ description String? @db.VarChar(256)
676
+ unit_amount Decimal? @default(0.0000) @db.Decimal(10, 4)
677
+ quantity Decimal? @default(0.0000) @db.Decimal(10, 4)
678
+ total_amount Decimal? @default(0.0000) @db.Decimal(20, 4)
679
+ uom String? @db.VarChar(256)
680
+ uom_id BigInt? @default(0)
681
+ document_doc_id BigInt?
682
+ }
683
+
684
+ model document_documents {
685
+ document_document_id BigInt @id @default(autoincrement())
686
+ createdatetime DateTime? @db.Timestamptz(6)
687
+ createuserid BigInt @default(0)
688
+ updatedatetime DateTime? @db.Timestamptz(6)
689
+ updateuserid BigInt @default(0)
690
+ isdelete Boolean @default(false)
691
+ istrash Boolean @default(false)
692
+ accountid BigInt @default(0)
693
+ main_document_id BigInt @default(0)
694
+ document_id BigInt @default(0)
695
+ document_number String? @db.VarChar(32)
696
+ document_date DateTime? @db.Date
697
+ document_type String? @db.VarChar(32)
698
+ document_remark String? @db.VarChar(256)
699
+ reference1_id BigInt? @default(0)
700
+ reference1_label String? @db.VarChar(256)
701
+ reference2_id BigInt? @default(0)
702
+ reference2_label String? @db.VarChar(256)
703
+ location_id BigInt @default(0)
704
+ main_document_type String? @db.VarChar(128)
705
+ }
706
+
662
707
  model document_totals {
663
708
  document_total_id BigInt @id @default(autoincrement())
664
709
  createdatetime DateTime? @db.Timestamptz(6)