storemw-core-api 1.0.21 → 1.0.22

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 (60) hide show
  1. package/dist/controllers/injection_field/injectionFieldController.js +48 -27
  2. package/dist/controllers/injection_field/injectionFieldController.js.map +1 -1
  3. package/dist/models/ModelFactory.d.ts +2 -1
  4. package/dist/models/ModelFactory.js +12 -6
  5. package/dist/models/ModelFactory.js.map +1 -1
  6. package/dist/models/account/AccountModel.d.ts +2 -1
  7. package/dist/models/branch/BranchModel.d.ts +2 -1
  8. package/dist/models/branch_user/BranchUserModel.d.ts +2 -1
  9. package/dist/models/business/BusinessModel.d.ts +2 -1
  10. package/dist/models/group/GroupModel.d.ts +2 -1
  11. package/dist/models/group/GroupOwnerModel.d.ts +2 -1
  12. package/dist/models/injection_field/DocumentInjectionFieldModel.d.ts +2 -1
  13. package/dist/models/injection_field/InjectionFieldModel.d.ts +2 -1
  14. package/dist/models/injection_field/ItemInjectionFieldModel.d.ts +2 -1
  15. package/dist/models/injection_field/LogisticInjectionFieldModel.d.ts +2 -1
  16. package/dist/models/injection_field/RepositoryInjectionFieldModel.d.ts +2 -1
  17. package/dist/models/injection_field/UserInjectionFieldModel.d.ts +2 -1
  18. package/dist/models/item/BrandModel.d.ts +2 -1
  19. package/dist/models/item/CategoryModel.d.ts +2 -1
  20. package/dist/models/item/ItemModel.d.ts +2 -1
  21. package/dist/models/item/ProductModel.d.ts +2 -1
  22. package/dist/models/item/UomModel.d.ts +2 -1
  23. package/dist/models/location/LocationModel.d.ts +2 -1
  24. package/dist/models/location/LocationRackModel.d.ts +2 -1
  25. package/dist/models/location/LocationSlotModel.d.ts +2 -1
  26. package/dist/models/region/AreaModel.d.ts +2 -1
  27. package/dist/models/region/CountryModel.d.ts +2 -1
  28. package/dist/models/region/StateModel.d.ts +2 -1
  29. package/dist/models/user/AdministratorModel.d.ts +2 -1
  30. package/dist/models/user/CustomerModel.d.ts +2 -1
  31. package/dist/models/user/RetailerModel.d.ts +2 -1
  32. package/dist/models/user/UserModel.d.ts +2 -1
  33. package/dist/models/user/UserPropModel.d.ts +2 -1
  34. package/dist/models/user/UserStatusModel.d.ts +2 -1
  35. package/dist/models/user/WorkerModel.d.ts +2 -1
  36. package/dist/schema/payload/injection_field/schemaInjectionField.d.ts +509 -33
  37. package/dist/schema/payload/injection_field/schemaInjectionField.js +53 -23
  38. package/dist/schema/payload/injection_field/schemaInjectionField.js.map +1 -1
  39. package/dist/services/injection_field/DocumentInjectionFieldService.d.ts +1 -53
  40. package/dist/services/injection_field/DocumentInjectionFieldService.js +21 -4
  41. package/dist/services/injection_field/DocumentInjectionFieldService.js.map +1 -1
  42. package/dist/services/injection_field/ItemInjectionFieldService.d.ts +5 -54
  43. package/dist/services/injection_field/ItemInjectionFieldService.js +54 -12
  44. package/dist/services/injection_field/ItemInjectionFieldService.js.map +1 -1
  45. package/dist/services/injection_field/LogisticInjectionFieldService.d.ts +1 -14
  46. package/dist/services/injection_field/LogisticInjectionFieldService.js +21 -4
  47. package/dist/services/injection_field/LogisticInjectionFieldService.js.map +1 -1
  48. package/dist/services/injection_field/RepositoryInjectionFieldService.d.ts +1 -19
  49. package/dist/services/injection_field/RepositoryInjectionFieldService.js +21 -4
  50. package/dist/services/injection_field/RepositoryInjectionFieldService.js.map +1 -1
  51. package/dist/services/injection_field/UserInjectionFieldService.d.ts +1 -29
  52. package/dist/services/injection_field/UserInjectionFieldService.js +21 -4
  53. package/dist/services/injection_field/UserInjectionFieldService.js.map +1 -1
  54. package/dist/utils/index.d.ts +1 -1
  55. package/dist/utils/index.js +2 -1
  56. package/dist/utils/index.js.map +1 -1
  57. package/dist/utils/schemaUtils.d.ts +1 -0
  58. package/dist/utils/schemaUtils.js +14 -1
  59. package/dist/utils/schemaUtils.js.map +1 -1
  60. package/package.json +1 -1
@@ -10,6 +10,18 @@ const getRootName = (requestInjectionFieldType, toSingular) => {
10
10
  case "user":
11
11
  rootName = toSingular ? "injection_field" : "injection_fields";
12
12
  break;
13
+ case "item":
14
+ rootName = toSingular ? "injection_field" : "injection_fields";
15
+ break;
16
+ case "document":
17
+ rootName = toSingular ? "injection_field" : "injection_fields";
18
+ break;
19
+ case "repository":
20
+ rootName = toSingular ? "injection_field" : "injection_fields";
21
+ break;
22
+ case "logistic":
23
+ rootName = toSingular ? "injection_field" : "injection_fields";
24
+ break;
13
25
  }
14
26
  return rootName;
15
27
  };
@@ -67,38 +79,47 @@ const replaceInjectionField = async (req, res, next) => {
67
79
  let reqScope = req.body.scope;
68
80
  let reqPayload = req.body.payload;
69
81
  let response = {};
82
+ let request = payload_1.schemaInjectionFieldReplacePayload.parse({
83
+ scope: {
84
+ target: reqScope.target,
85
+ action: reqScope.action,
86
+ },
87
+ payload: reqPayload
88
+ });
89
+ let groupInjectionFields = [];
70
90
  if (requestInjectionFieldType === "user") {
71
- let request = payload_1.schemaInjectionFieldReplacePayload.parse({
72
- scope: {
73
- target: reqScope.target,
74
- action: reqScope.action,
75
- },
76
- payload: reqPayload
77
- });
78
- let b = (0, payload_1.groupPayloadInjectionFields)(request.payload.injection_fields, {
91
+ groupInjectionFields = (0, payload_1.groupPayloadInjectionFields)(request.payload.injection_fields, {
79
92
  user: "userId",
80
93
  branch: "branchId",
81
94
  });
82
- // console.log('request', JSON.stringify(b))
83
- const responseAll = await Promise.all(b.map(async (i) => {
84
- const payload = {
85
- injectionFieldType: requestInjectionFieldType,
86
- data: i,
87
- };
88
- try {
89
- return injectionFieldService.replaceInjectionField(payload);
90
- }
91
- catch (error) {
92
- // console.log('err', error)
93
- return error;
94
- }
95
- }));
96
- // console.log('responseAll', JSON.stringify(responseAll))
97
- response = {
98
- [`${getRootName(requestInjectionFieldType, true)}`]: responseAll
99
- };
100
95
  }
101
- (0, utils_1.sendSuccess)(res, response, `Injection Field(${requestInjectionFieldType}) replaced successfully`);
96
+ if (requestInjectionFieldType === "item") {
97
+ groupInjectionFields = (0, payload_1.groupPayloadInjectionFields)(request.payload.injection_fields, {}, {
98
+ item: "itemId",
99
+ product: "productId",
100
+ category: "categoryId",
101
+ brand: "brandId",
102
+ uom: "uomId",
103
+ });
104
+ }
105
+ const responseAll = await Promise.all(groupInjectionFields.map(async (i) => {
106
+ const payload = {
107
+ injectionFieldType: requestInjectionFieldType,
108
+ data: i,
109
+ };
110
+ try {
111
+ return injectionFieldService.replaceInjectionField(payload);
112
+ }
113
+ catch (error) {
114
+ // console.log('err', error)
115
+ return error;
116
+ }
117
+ }));
118
+ // console.log('responseAll', JSON.stringify(responseAll))
119
+ response = {
120
+ [`${getRootName(requestInjectionFieldType, false)}`]: responseAll
121
+ };
122
+ (0, utils_1.sendSuccess)(res, response, `Injection Fields(${requestInjectionFieldType}) replaced successfully`);
102
123
  }
103
124
  catch (err) {
104
125
  next(err);
@@ -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\"\n\nimport { InjectionFieldModuleRef, InjectionFieldService, InjectionFieldListProps, InjectionFieldServiceProps, InjectionFieldCreateProps, InjectionFieldReplaceProps } from \"@/services\"\nimport { schemaInjectionFieldReplacePayload, schemaInjectionFieldCreatePayload, schemaInjectionFieldDeletePayload, groupPayloadInjectionFields } 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 }\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_field : replace injection field */\nexport const replaceInjectionField = 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 if (requestInjectionFieldType === \"user\") {\n\n let request = schemaInjectionFieldReplacePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action,\n },\n payload: reqPayload\n })\n\n let b = groupPayloadInjectionFields(request.payload.injection_fields, {\n user: \"userId\",\n branch: \"branchId\",\n });\n\n // console.log('request', JSON.stringify(b))\n\n const responseAll = await Promise.all(\n b.map(async (i) => {\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, true)}`]: responseAll\n }\n\n }\n\n sendSuccess(res, response, `Injection Field(${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":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\n\nimport { InjectionFieldModuleRef, InjectionFieldService, InjectionFieldListProps, InjectionFieldServiceProps, InjectionFieldCreateProps, InjectionFieldReplaceProps } from \"@/services\"\nimport { schemaInjectionFieldReplacePayload, schemaInjectionFieldCreatePayload, schemaInjectionFieldDeletePayload, groupPayloadInjectionFields } 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_field : replace injection field */\nexport const replaceInjectionField = 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 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};"]}
@@ -25,10 +25,11 @@ TModel>({ debug, prisma, modelName, primaryKey, accountId, actionUserId, }: {
25
25
  include?: any;
26
26
  }) => Promise<TModel | null>;
27
27
  list: ({ where, orderBy, offset, limit, include }?: any) => Promise<TModel[]>;
28
- update: ({ id, where, data }: {
28
+ update: ({ id, where, data, disableRollback }: {
29
29
  id?: number;
30
30
  where?: Record<string, any>;
31
31
  data: Partial<TModel>;
32
+ disableRollback?: Boolean;
32
33
  }) => Promise<TModel>;
33
34
  trash: ({ ids }: {
34
35
  ids: number[];
@@ -71,7 +71,7 @@ const ModelFactory = ({ debug = false, prisma, modelName, primaryKey = "id", acc
71
71
  include,
72
72
  });
73
73
  };
74
- const update = async ({ id, where, data }) => {
74
+ const update = async ({ id, where, data, disableRollback = false }) => {
75
75
  if (debug) {
76
76
  console.log(`[ModelFactory(data)]: ${JSON.stringify(data)}`);
77
77
  console.log("[ModelFactory:delegate]", JSON.stringify(Object.keys(prisma)));
@@ -86,10 +86,13 @@ const ModelFactory = ({ debug = false, prisma, modelName, primaryKey = "id", acc
86
86
  where: finalWhere,
87
87
  data: { ...data, ...(0, default_1.getDefaultUpdateFields)(actionUserId) },
88
88
  });
89
- if (!result.count)
90
- throw new Error(default_1.errorRecordNotFoundAlreadyDeleted);
89
+ if (disableRollback === false) {
90
+ if (!result.count) {
91
+ throw new Error(default_1.errorRecordNotFoundAlreadyDeleted);
92
+ }
93
+ }
91
94
  // const updatedRecord = await modelTx.findUnique({ where: { [primaryKey]: id } });
92
- let updatedRecord;
95
+ let updatedRecord = null;
93
96
  if (id) {
94
97
  // use findUnique when updating by primary key
95
98
  updatedRecord = await modelTx.findUnique({ where: { [primaryKey]: id } });
@@ -98,8 +101,11 @@ const ModelFactory = ({ debug = false, prisma, modelName, primaryKey = "id", acc
98
101
  // use findFirst when updating by other field(s)
99
102
  updatedRecord = await modelTx.findFirst({ where: finalWhere });
100
103
  }
101
- if (!updatedRecord)
102
- throw new Error(default_1.errorRecordNotFoundAfterUpdated);
104
+ if (disableRollback === false) {
105
+ if (!updatedRecord) {
106
+ throw new Error(default_1.errorRecordNotFoundAfterUpdated);
107
+ }
108
+ }
103
109
  return updatedRecord;
104
110
  });
105
111
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ModelFactory.js","sourceRoot":"","sources":["../../src/models/ModelFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DefaultOmitFields,\n getDefaultCreateFields,\n getDefaultUpdateFields,\n getDefaultTrashFields,\n getDefaultRemoveFields,\n getDefaultGetWhere,\n getDefaultUpdateWhere,\n getDefaultTrashWhere,\n getDefaultRemoveWhere,\n errorRecordNotFoundAlreadyDeleted,\n errorRecordNotFoundAfterUpdated,\n errorRecordNotFoundAfterTrashed,\n errorRecordNotFoundAfterRemoved\n} from \"@/models/default\";\n// import { PrismaClient } from \"@prisma/client\";\nimport type { PrismaClient } from \"@prisma/client\";\n\n// Minimal transaction interface\ntype TxModel<T> = {\n updateMany(args: any): Promise<{ count: number }>;\n findUnique(args: any): Promise<T | null>;\n findMany?(args: any): Promise<T[]>;\n};\n\ntype ColumnInfo = { column_name: string; data_type: string };\ntype Column = { name: string; type: string };\n\n\nexport const ModelFactory = <\n // TModel extends object\n // TClient extends { [k: string]: any }, // generic PrismaClient\n // TModel extends object,\n // TName extends keyof TClient\n TClient extends Record<string, any>, // PrismaClient\n TName extends keyof TClient, // \"plant_clones\"\n TDelegate extends TClient[TName], // PrismaClient[\"plant_clones\"]\n TModel // plant_clones type\n>({\n debug = false,\n prisma,\n modelName,\n primaryKey = \"id\" as keyof TModel,\n accountId,\n actionUserId,\n}: {\n debug?: boolean,\n // prisma: PrismaClient;\n prisma: TClient,\n // modelName: keyof PrismaClient;\n modelName: TName,\n primaryKey?: keyof TModel;\n accountId: number,\n actionUserId: number\n}) => {\n\n // const delegate = prisma[modelName] as any;\n const delegate = prisma[modelName] as unknown as {\n create: (args: any) => Promise<TModel>;\n update: (args: any) => Promise<TModel>;\n delete: (args: any) => Promise<TModel>;\n findUnique: (args: any) => Promise<TModel | null>;\n findFirst: (args: any) => Promise<TModel | null>; // ✅ add this\n findMany: (args: any) => Promise<TModel[]>;\n updateMany: (args: any) => Promise<{ count: number }>; // ✅ useful for update\n };\n\n const getFields = async (\n prefix?: string,\n excludeKeywords: string[] = []\n ): Promise<Column[]> => {\n // 👇 Tell TS exactly what comes back from Prisma\n const fields: ColumnInfo[] = await prisma.$queryRaw<ColumnInfo[]>`\n SELECT column_name, data_type\n FROM information_schema.columns \n WHERE table_name = ${String(modelName)}\n `;\n\n return fields\n .map((f: ColumnInfo): Column => ({\n name: f.column_name,\n type: f.data_type,\n }))\n .filter((c: Column) => !prefix || c.name.startsWith(prefix))\n .filter((c: Column) => !excludeKeywords.some((kw) => c.name.includes(kw)));\n };\n\n // const getFields = async (\n // prefix?: string,\n // excludeKeywords?: string[]\n // ): Promise<{ name: string; type: string }[]> => {\n // const fields = await prisma.$queryRaw<{ column_name: string; data_type: string }[]>`\n // SELECT column_name, data_type\n // FROM information_schema.columns \n // WHERE table_name = ${String(modelName)}\n // `;\n\n // let cols = fields.map(f => ({ name: f.column_name, type: f.data_type }));\n\n // if (prefix) {\n // cols = cols.filter(c => c.name.startsWith(prefix));\n // }\n\n // if (excludeKeywords && excludeKeywords.length > 0) {\n // cols = cols.filter(c => !excludeKeywords.some(kw => c.name.includes(kw)));\n // }\n\n // return cols;\n // };\n\n const create = async ({ data }: { data: Omit<any, DefaultOmitFields> }): Promise<TModel> => {\n\n const _data = { ...data, ...getDefaultCreateFields(actionUserId, accountId) }\n\n if (debug) {\n console.log(`[ModelFactory(data)]: ${JSON.stringify(_data)}`)\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return delegate.create({\n data: _data,\n });\n };\n\n const get = async ({\n id,\n where,\n include,\n }: {\n id?: number;\n where?: Record<string, any>;\n include?: any;\n }): Promise<TModel | null> => {\n const condition = id ? { [primaryKey]: id } : where ?? {};\n const condition2 = { accountid: accountId }\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return delegate.findFirst({\n where: { ...condition, ...condition2, ...getDefaultGetWhere },\n include,\n });\n };\n\n const list = async ({ where, orderBy, offset, limit, include }: any = {}): Promise<TModel[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return delegate.findMany({\n where,\n orderBy,\n skip: offset,\n take: limit,\n include,\n });\n };\n\n const update = async ({ id, where, data }: {\n id?: number;\n where?: Record<string, any>;\n data: Partial<TModel>\n }): Promise<TModel> => {\n\n if (debug) {\n console.log(`[ModelFactory(data)]: ${JSON.stringify(data)}`)\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$transaction(async (tx: typeof prisma) => {\n const modelTx = (tx as any)[modelName] as TxModel<TModel>;\n\n // prefer primary key if provided, otherwise fall back to custom where\n const finalWhere = id\n ? { [primaryKey]: id, ...getDefaultUpdateWhere }\n : { ...where, ...getDefaultUpdateWhere };\n\n const result = await modelTx.updateMany({\n where: finalWhere,\n data: { ...data, ...getDefaultUpdateFields(actionUserId) },\n });\n\n if (!result.count) throw new Error(errorRecordNotFoundAlreadyDeleted);\n\n // const updatedRecord = await modelTx.findUnique({ where: { [primaryKey]: id } });\n\n let updatedRecord: TModel | null;\n\n if (id) {\n // use findUnique when updating by primary key\n updatedRecord = await modelTx.findUnique({ where: { [primaryKey]: id } });\n } else {\n // use findFirst when updating by other field(s)\n updatedRecord = await (modelTx as any).findFirst({ where: finalWhere });\n }\n\n if (!updatedRecord) throw new Error(errorRecordNotFoundAfterUpdated);\n\n return updatedRecord;\n });\n };\n\n const trash = async ({ ids }: { ids: number[] }): Promise<TModel[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$transaction(async (tx: typeof prisma) => {\n const modelTx = (tx as any)[modelName] as TxModel<TModel>;\n\n const result = await modelTx.updateMany({\n where: { [primaryKey]: { in: ids }, ...getDefaultTrashWhere },\n data: { ...getDefaultTrashFields(actionUserId) },\n });\n\n if (!result.count || result.count !== ids.length)\n throw new Error(errorRecordNotFoundAlreadyDeleted);\n\n const updated = await modelTx.findMany!({ where: { [primaryKey]: { in: ids } } });\n if (!updated.length) throw new Error(errorRecordNotFoundAfterTrashed);\n\n return updated;\n });\n };\n\n const remove = async ({ ids, where }: { ids?: number[], where?: Record<string, any>; }): Promise<TModel[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$transaction(async (tx: typeof prisma) => {\n const modelTx = (tx as any)[modelName] as TxModel<TModel>;\n\n // prefer primary ids if provided, otherwise fall back to custom where\n const finalWhere = ids\n ? { [primaryKey]: { in: ids }, ...getDefaultRemoveWhere }\n : { ...where, ...getDefaultRemoveWhere };\n\n const result = await modelTx.updateMany({\n where: finalWhere,\n data: { ...getDefaultRemoveFields(actionUserId) },\n });\n\n // if (!result.count) throw new Error(errorRecordNotFoundAlreadyDeleted);\n if (!result.count) {\n // no rows touched → just return []\n return [];\n }\n\n let updated: TModel[] | null;\n\n if (ids) {\n updated = await modelTx.findMany!({ where: { [primaryKey]: { in: ids } } });\n } else {\n updated = await modelTx.findMany!({ where });\n }\n\n if (!updated || updated.length === 0) {\n throw new Error(errorRecordNotFoundAfterRemoved);\n }\n\n return updated;\n });\n };\n\n // Used for SELECT queries (read operations)\n const raw = async <T = any>(query: string, params: any[] = []): Promise<T[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n const client = prisma as unknown as PrismaClient;\n // return prisma.$queryRawUnsafe<T[]>(query, ...params);\n return client.$queryRawUnsafe<T[]>(query, ...params);\n };\n\n // Used for mutations (INSERT, UPDATE, DELETE, DDL like CREATE TABLE etc.)\n const rawExec = async (query: string, params: any[] = []): Promise<number> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$executeRawUnsafe(query, ...params); // returns number of affected rows\n };\n\n return { primaryKey, getFields, create, get, list, update, trash, remove, raw, rawExec };\n};\n"]}
1
+ {"version":3,"file":"ModelFactory.js","sourceRoot":"","sources":["../../src/models/ModelFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DefaultOmitFields,\n getDefaultCreateFields,\n getDefaultUpdateFields,\n getDefaultTrashFields,\n getDefaultRemoveFields,\n getDefaultGetWhere,\n getDefaultUpdateWhere,\n getDefaultTrashWhere,\n getDefaultRemoveWhere,\n errorRecordNotFoundAlreadyDeleted,\n errorRecordNotFoundAfterUpdated,\n errorRecordNotFoundAfterTrashed,\n errorRecordNotFoundAfterRemoved\n} from \"@/models/default\";\n// import { PrismaClient } from \"@prisma/client\";\nimport type { PrismaClient } from \"@prisma/client\";\n\n// Minimal transaction interface\ntype TxModel<T> = {\n updateMany(args: any): Promise<{ count: number }>;\n findUnique(args: any): Promise<T | null>;\n findMany?(args: any): Promise<T[]>;\n};\n\ntype ColumnInfo = { column_name: string; data_type: string };\ntype Column = { name: string; type: string };\n\n\nexport const ModelFactory = <\n // TModel extends object\n // TClient extends { [k: string]: any }, // generic PrismaClient\n // TModel extends object,\n // TName extends keyof TClient\n TClient extends Record<string, any>, // PrismaClient\n TName extends keyof TClient, // \"plant_clones\"\n TDelegate extends TClient[TName], // PrismaClient[\"plant_clones\"]\n TModel // plant_clones type\n>({\n debug = false,\n prisma,\n modelName,\n primaryKey = \"id\" as keyof TModel,\n accountId,\n actionUserId,\n}: {\n debug?: boolean,\n // prisma: PrismaClient;\n prisma: TClient,\n // modelName: keyof PrismaClient;\n modelName: TName,\n primaryKey?: keyof TModel;\n accountId: number,\n actionUserId: number\n}) => {\n\n // const delegate = prisma[modelName] as any;\n const delegate = prisma[modelName] as unknown as {\n create: (args: any) => Promise<TModel>;\n update: (args: any) => Promise<TModel>;\n delete: (args: any) => Promise<TModel>;\n findUnique: (args: any) => Promise<TModel | null>;\n findFirst: (args: any) => Promise<TModel | null>; // ✅ add this\n findMany: (args: any) => Promise<TModel[]>;\n updateMany: (args: any) => Promise<{ count: number }>; // ✅ useful for update\n };\n\n const getFields = async (\n prefix?: string,\n excludeKeywords: string[] = []\n ): Promise<Column[]> => {\n // 👇 Tell TS exactly what comes back from Prisma\n const fields: ColumnInfo[] = await prisma.$queryRaw<ColumnInfo[]>`\n SELECT column_name, data_type\n FROM information_schema.columns \n WHERE table_name = ${String(modelName)}\n `;\n\n return fields\n .map((f: ColumnInfo): Column => ({\n name: f.column_name,\n type: f.data_type,\n }))\n .filter((c: Column) => !prefix || c.name.startsWith(prefix))\n .filter((c: Column) => !excludeKeywords.some((kw) => c.name.includes(kw)));\n };\n\n // const getFields = async (\n // prefix?: string,\n // excludeKeywords?: string[]\n // ): Promise<{ name: string; type: string }[]> => {\n // const fields = await prisma.$queryRaw<{ column_name: string; data_type: string }[]>`\n // SELECT column_name, data_type\n // FROM information_schema.columns \n // WHERE table_name = ${String(modelName)}\n // `;\n\n // let cols = fields.map(f => ({ name: f.column_name, type: f.data_type }));\n\n // if (prefix) {\n // cols = cols.filter(c => c.name.startsWith(prefix));\n // }\n\n // if (excludeKeywords && excludeKeywords.length > 0) {\n // cols = cols.filter(c => !excludeKeywords.some(kw => c.name.includes(kw)));\n // }\n\n // return cols;\n // };\n\n const create = async ({ data }: { data: Omit<any, DefaultOmitFields> }): Promise<TModel> => {\n\n const _data = { ...data, ...getDefaultCreateFields(actionUserId, accountId) }\n\n if (debug) {\n console.log(`[ModelFactory(data)]: ${JSON.stringify(_data)}`)\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return delegate.create({\n data: _data,\n });\n };\n\n const get = async ({\n id,\n where,\n include,\n }: {\n id?: number;\n where?: Record<string, any>;\n include?: any;\n }): Promise<TModel | null> => {\n const condition = id ? { [primaryKey]: id } : where ?? {};\n const condition2 = { accountid: accountId }\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return delegate.findFirst({\n where: { ...condition, ...condition2, ...getDefaultGetWhere },\n include,\n });\n };\n\n const list = async ({ where, orderBy, offset, limit, include }: any = {}): Promise<TModel[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return delegate.findMany({\n where,\n orderBy,\n skip: offset,\n take: limit,\n include,\n });\n };\n\n const update = async ({ id, where, data, disableRollback = false }: {\n id?: number;\n where?: Record<string, any>;\n data: Partial<TModel>,\n disableRollback?: Boolean\n }): Promise<TModel> => {\n\n if (debug) {\n console.log(`[ModelFactory(data)]: ${JSON.stringify(data)}`)\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$transaction(async (tx: typeof prisma) => {\n const modelTx = (tx as any)[modelName] as TxModel<TModel>;\n\n // prefer primary key if provided, otherwise fall back to custom where\n const finalWhere = id\n ? { [primaryKey]: id, ...getDefaultUpdateWhere }\n : { ...where, ...getDefaultUpdateWhere };\n\n const result = await modelTx.updateMany({\n where: finalWhere,\n data: { ...data, ...getDefaultUpdateFields(actionUserId) },\n });\n\n if (disableRollback === false) {\n if (!result.count) {\n throw new Error(errorRecordNotFoundAlreadyDeleted);\n }\n }\n\n // const updatedRecord = await modelTx.findUnique({ where: { [primaryKey]: id } });\n\n let updatedRecord: TModel | null = null;\n\n if (id) {\n // use findUnique when updating by primary key\n updatedRecord = await modelTx.findUnique({ where: { [primaryKey]: id } });\n } else {\n // use findFirst when updating by other field(s)\n updatedRecord = await (modelTx as any).findFirst({ where: finalWhere });\n }\n\n if (disableRollback === false) {\n if (!updatedRecord) {\n throw new Error(errorRecordNotFoundAfterUpdated);\n }\n }\n\n return updatedRecord;\n });\n };\n\n const trash = async ({ ids }: { ids: number[] }): Promise<TModel[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$transaction(async (tx: typeof prisma) => {\n const modelTx = (tx as any)[modelName] as TxModel<TModel>;\n\n const result = await modelTx.updateMany({\n where: { [primaryKey]: { in: ids }, ...getDefaultTrashWhere },\n data: { ...getDefaultTrashFields(actionUserId) },\n });\n\n if (!result.count || result.count !== ids.length)\n throw new Error(errorRecordNotFoundAlreadyDeleted);\n\n const updated = await modelTx.findMany!({ where: { [primaryKey]: { in: ids } } });\n if (!updated.length) throw new Error(errorRecordNotFoundAfterTrashed);\n\n return updated;\n });\n };\n\n const remove = async ({ ids, where }: { ids?: number[], where?: Record<string, any>; }): Promise<TModel[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$transaction(async (tx: typeof prisma) => {\n const modelTx = (tx as any)[modelName] as TxModel<TModel>;\n\n // prefer primary ids if provided, otherwise fall back to custom where\n const finalWhere = ids\n ? { [primaryKey]: { in: ids }, ...getDefaultRemoveWhere }\n : { ...where, ...getDefaultRemoveWhere };\n\n const result = await modelTx.updateMany({\n where: finalWhere,\n data: { ...getDefaultRemoveFields(actionUserId) },\n });\n\n // if (!result.count) throw new Error(errorRecordNotFoundAlreadyDeleted);\n if (!result.count) {\n // no rows touched → just return []\n return [];\n }\n\n let updated: TModel[] | null;\n\n if (ids) {\n updated = await modelTx.findMany!({ where: { [primaryKey]: { in: ids } } });\n } else {\n updated = await modelTx.findMany!({ where });\n }\n\n if (!updated || updated.length === 0) {\n throw new Error(errorRecordNotFoundAfterRemoved);\n }\n\n return updated;\n });\n };\n\n // Used for SELECT queries (read operations)\n const raw = async <T = any>(query: string, params: any[] = []): Promise<T[]> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n const client = prisma as unknown as PrismaClient;\n // return prisma.$queryRawUnsafe<T[]>(query, ...params);\n return client.$queryRawUnsafe<T[]>(query, ...params);\n };\n\n // Used for mutations (INSERT, UPDATE, DELETE, DDL like CREATE TABLE etc.)\n const rawExec = async (query: string, params: any[] = []): Promise<number> => {\n\n if (debug) {\n console.log(\"[ModelFactory:delegate]\", JSON.stringify(Object.keys(prisma)));\n }\n\n return prisma.$executeRawUnsafe(query, ...params); // returns number of affected rows\n };\n\n return { primaryKey, getFields, create, get, list, update, trash, remove, raw, rawExec };\n};\n"]}
@@ -93,7 +93,7 @@ export declare const AccountModel: ({ prisma, accountId, actionUserId }: {
93
93
  accountid: bigint;
94
94
  business_id: bigint | null;
95
95
  }[]>;
96
- update: ({ id, where, data }: {
96
+ update: ({ id, where, data, disableRollback }: {
97
97
  id?: number;
98
98
  where?: Record<string, any>;
99
99
  data: Partial<{
@@ -108,6 +108,7 @@ export declare const AccountModel: ({ prisma, accountId, actionUserId }: {
108
108
  accountid: bigint;
109
109
  business_id: bigint | null;
110
110
  }>;
111
+ disableRollback?: Boolean;
111
112
  }) => Promise<{
112
113
  name: string;
113
114
  account_id: bigint;
@@ -157,7 +157,7 @@ export declare const BranchModel: ({ prisma, accountId, actionUserId }: {
157
157
  branch_contact: string | null;
158
158
  branch_email: string | null;
159
159
  }[]>;
160
- update: ({ id, where, data }: {
160
+ update: ({ id, where, data, disableRollback }: {
161
161
  id?: number;
162
162
  where?: Record<string, any>;
163
163
  data: Partial<{
@@ -189,6 +189,7 @@ export declare const BranchModel: ({ prisma, accountId, actionUserId }: {
189
189
  branch_contact: string | null;
190
190
  branch_email: string | null;
191
191
  }>;
192
+ disableRollback?: Boolean;
192
193
  }) => Promise<{
193
194
  type: string | null;
194
195
  status: number | null;
@@ -89,7 +89,7 @@ export declare const BranchUserModel: ({ prisma, accountId, actionUserId }: {
89
89
  branch_user_id: bigint;
90
90
  parent_user_id: bigint | null;
91
91
  }[]>;
92
- update: ({ id, where, data }: {
92
+ update: ({ id, where, data, disableRollback }: {
93
93
  id?: number;
94
94
  where?: Record<string, any>;
95
95
  data: Partial<{
@@ -104,6 +104,7 @@ export declare const BranchUserModel: ({ prisma, accountId, actionUserId }: {
104
104
  branch_user_id: bigint;
105
105
  parent_user_id: bigint | null;
106
106
  }>;
107
+ disableRollback?: Boolean;
107
108
  }) => Promise<{
108
109
  user_id: bigint | null;
109
110
  createdatetime: Date | null;
@@ -133,7 +133,7 @@ export declare const BusinessModel: ({ prisma, accountId, actionUserId }: {
133
133
  website: string | null;
134
134
  company_contact: string | null;
135
135
  }[]>;
136
- update: ({ id, where, data }: {
136
+ update: ({ id, where, data, disableRollback }: {
137
137
  id?: number;
138
138
  where?: Record<string, any>;
139
139
  data: Partial<{
@@ -158,6 +158,7 @@ export declare const BusinessModel: ({ prisma, accountId, actionUserId }: {
158
158
  website: string | null;
159
159
  company_contact: string | null;
160
160
  }>;
161
+ disableRollback?: Boolean;
161
162
  }) => Promise<{
162
163
  status: number;
163
164
  createdatetime: Date | null;
@@ -101,7 +101,7 @@ export declare const GroupModel: ({ prisma, accountId, actionUserId }: {
101
101
  group_description: string | null;
102
102
  group_type: string | null;
103
103
  }[]>;
104
- update: ({ id, where, data }: {
104
+ update: ({ id, where, data, disableRollback }: {
105
105
  id?: number;
106
106
  where?: Record<string, any>;
107
107
  data: Partial<{
@@ -118,6 +118,7 @@ export declare const GroupModel: ({ prisma, accountId, actionUserId }: {
118
118
  group_description: string | null;
119
119
  group_type: string | null;
120
120
  }>;
121
+ disableRollback?: Boolean;
121
122
  }) => Promise<{
122
123
  status: number | null;
123
124
  createdatetime: Date | null;
@@ -97,7 +97,7 @@ export declare const GroupOwnerModel: ({ prisma, accountId, actionUserId }: {
97
97
  group_id: bigint;
98
98
  group_owner_id: bigint;
99
99
  }[]>;
100
- update: ({ id, where, data }: {
100
+ update: ({ id, where, data, disableRollback }: {
101
101
  id?: number;
102
102
  where?: Record<string, any>;
103
103
  data: Partial<{
@@ -113,6 +113,7 @@ export declare const GroupOwnerModel: ({ prisma, accountId, actionUserId }: {
113
113
  group_id: bigint;
114
114
  group_owner_id: bigint;
115
115
  }>;
116
+ disableRollback?: Boolean;
116
117
  }) => Promise<{
117
118
  type: string;
118
119
  user_id: bigint;
@@ -257,7 +257,7 @@ export declare const DocumentInjectionFieldModel: ({ prisma, accountId, actionUs
257
257
  doci_sdn_is_bulk: bigint | null;
258
258
  removed_doci_do_4sdfsdfd7s: Date | null;
259
259
  }[]>;
260
- update: ({ id, where, data }: {
260
+ update: ({ id, where, data, disableRollback }: {
261
261
  id?: number;
262
262
  where?: Record<string, any>;
263
263
  data: Partial<{
@@ -313,6 +313,7 @@ export declare const DocumentInjectionFieldModel: ({ prisma, accountId, actionUs
313
313
  doci_sdn_is_bulk: bigint | null;
314
314
  removed_doci_do_4sdfsdfd7s: Date | null;
315
315
  }>;
316
+ disableRollback?: Boolean;
316
317
  }) => Promise<{
317
318
  createdatetime: Date | null;
318
319
  createuserid: bigint;
@@ -124,7 +124,7 @@ export declare const InjectionFieldModel: ({ prisma, accountId, actionUserId }:
124
124
  multiple_count: bigint | null;
125
125
  merge_multiple_inline: bigint;
126
126
  }[]>;
127
- update: ({ id, where, data }: {
127
+ update: ({ id, where, data, disableRollback }: {
128
128
  id?: number;
129
129
  where?: Record<string, any>;
130
130
  data: Partial<{
@@ -145,6 +145,7 @@ export declare const InjectionFieldModel: ({ prisma, accountId, actionUserId }:
145
145
  multiple_count: bigint | null;
146
146
  merge_multiple_inline: bigint;
147
147
  }>;
148
+ disableRollback?: Boolean;
148
149
  }) => Promise<{
149
150
  createdatetime: Date | null;
150
151
  createuserid: bigint;
@@ -245,7 +245,7 @@ export declare const ItemInjectionFieldModel: ({ prisma, accountId, actionUserId
245
245
  removed_itm_uom_samplefield: string | null;
246
246
  removed_itm_ct_samplefield: string | null;
247
247
  }[]>;
248
- update: ({ id, where, data }: {
248
+ update: ({ id, where, data, disableRollback }: {
249
249
  id?: number;
250
250
  where?: Record<string, any>;
251
251
  data: Partial<{
@@ -298,6 +298,7 @@ export declare const ItemInjectionFieldModel: ({ prisma, accountId, actionUserId
298
298
  removed_itm_uom_samplefield: string | null;
299
299
  removed_itm_ct_samplefield: string | null;
300
300
  }>;
301
+ disableRollback?: Boolean;
301
302
  }) => Promise<{
302
303
  createdatetime: Date | null;
303
304
  createuserid: bigint;
@@ -101,7 +101,7 @@ export declare const LogisticInjectionFieldModel: ({ prisma, accountId, actionUs
101
101
  logistic_id: bigint;
102
102
  lgt_tpt_repo_t3e2s2: Prisma.Decimal | null;
103
103
  }[]>;
104
- update: ({ id, where, data }: {
104
+ update: ({ id, where, data, disableRollback }: {
105
105
  id?: number;
106
106
  where?: Record<string, any>;
107
107
  data: Partial<{
@@ -118,6 +118,7 @@ export declare const LogisticInjectionFieldModel: ({ prisma, accountId, actionUs
118
118
  logistic_id: bigint;
119
119
  lgt_tpt_repo_t3e2s2: Prisma.Decimal | null;
120
120
  }>;
121
+ disableRollback?: Boolean;
121
122
  }) => Promise<{
122
123
  createdatetime: Date | null;
123
124
  createuserid: bigint;
@@ -121,7 +121,7 @@ export declare const RepositoryInjectionFieldModel: ({ prisma, accountId, action
121
121
  repo_itme_pk_pk_cont_item: Prisma.Decimal | null;
122
122
  repo_itme_cont_pk_cont_item: Prisma.Decimal | null;
123
123
  }[]>;
124
- update: ({ id, where, data }: {
124
+ update: ({ id, where, data, disableRollback }: {
125
125
  id?: number;
126
126
  where?: Record<string, any>;
127
127
  data: Partial<{
@@ -143,6 +143,7 @@ export declare const RepositoryInjectionFieldModel: ({ prisma, accountId, action
143
143
  repo_itme_pk_pk_cont_item: Prisma.Decimal | null;
144
144
  repo_itme_cont_pk_cont_item: Prisma.Decimal | null;
145
145
  }>;
146
+ disableRollback?: Boolean;
146
147
  }) => Promise<{
147
148
  createdatetime: Date | null;
148
149
  createuserid: bigint;
@@ -161,7 +161,7 @@ export declare const UserInjectionFieldModel: ({ prisma, accountId, actionUserId
161
161
  removed_usr_cust_222333223: Date | null;
162
162
  removed_br_ret_4sdfsdfd7s: string | null;
163
163
  }[]>;
164
- update: ({ id, where, data }: {
164
+ update: ({ id, where, data, disableRollback }: {
165
165
  id?: number;
166
166
  where?: Record<string, any>;
167
167
  data: Partial<{
@@ -193,6 +193,7 @@ export declare const UserInjectionFieldModel: ({ prisma, accountId, actionUserId
193
193
  removed_usr_cust_222333223: Date | null;
194
194
  removed_br_ret_4sdfsdfd7s: string | null;
195
195
  }>;
196
+ disableRollback?: Boolean;
196
197
  }) => Promise<{
197
198
  user_id: bigint;
198
199
  createdatetime: Date | null;
@@ -93,7 +93,7 @@ export declare const BrandModel: ({ prisma, accountId, actionUserId }: {
93
93
  brand_id: bigint;
94
94
  description: string | null;
95
95
  }[]>;
96
- update: ({ id, where, data }: {
96
+ update: ({ id, where, data, disableRollback }: {
97
97
  id?: number;
98
98
  where?: Record<string, any>;
99
99
  data: Partial<{
@@ -109,6 +109,7 @@ export declare const BrandModel: ({ prisma, accountId, actionUserId }: {
109
109
  brand_id: bigint;
110
110
  description: string | null;
111
111
  }>;
112
+ disableRollback?: Boolean;
112
113
  }) => Promise<{
113
114
  status: number | null;
114
115
  name: string | null;
@@ -97,7 +97,7 @@ export declare const CategoryModel: ({ prisma, accountId, actionUserId }: {
97
97
  description: string | null;
98
98
  parent_category_id: bigint;
99
99
  }[]>;
100
- update: ({ id, where, data }: {
100
+ update: ({ id, where, data, disableRollback }: {
101
101
  id?: number;
102
102
  where?: Record<string, any>;
103
103
  data: Partial<{
@@ -114,6 +114,7 @@ export declare const CategoryModel: ({ prisma, accountId, actionUserId }: {
114
114
  description: string | null;
115
115
  parent_category_id: bigint;
116
116
  }>;
117
+ disableRollback?: Boolean;
117
118
  }) => Promise<{
118
119
  status: number | null;
119
120
  name: string | null;
@@ -177,7 +177,7 @@ export declare const ItemModel: ({ prisma, accountId, actionUserId }: {
177
177
  cbm: Prisma.Decimal | null;
178
178
  volume_weight: Prisma.Decimal | null;
179
179
  }[]>;
180
- update: ({ id, where, data }: {
180
+ update: ({ id, where, data, disableRollback }: {
181
181
  id?: number;
182
182
  where?: Record<string, any>;
183
183
  data: Partial<{
@@ -214,6 +214,7 @@ export declare const ItemModel: ({ prisma, accountId, actionUserId }: {
214
214
  cbm: Prisma.Decimal | null;
215
215
  volume_weight: Prisma.Decimal | null;
216
216
  }>;
217
+ disableRollback?: Boolean;
217
218
  }) => Promise<{
218
219
  code: string | null;
219
220
  status: number | null;
@@ -113,7 +113,7 @@ export declare const ProductModel: ({ prisma, accountId, actionUserId }: {
113
113
  summary: string | null;
114
114
  product_code: string | null;
115
115
  }[]>;
116
- update: ({ id, where, data }: {
116
+ update: ({ id, where, data, disableRollback }: {
117
117
  id?: number;
118
118
  where?: Record<string, any>;
119
119
  data: Partial<{
@@ -134,6 +134,7 @@ export declare const ProductModel: ({ prisma, accountId, actionUserId }: {
134
134
  summary: string | null;
135
135
  product_code: string | null;
136
136
  }>;
137
+ disableRollback?: Boolean;
137
138
  }) => Promise<{
138
139
  status: number | null;
139
140
  createdatetime: Date | null;
@@ -105,7 +105,7 @@ export declare const UomModel: ({ prisma, accountId, actionUserId }: {
105
105
  metric_type_display_name: string | null;
106
106
  decimal_digit: number | null;
107
107
  }[]>;
108
- update: ({ id, where, data }: {
108
+ update: ({ id, where, data, disableRollback }: {
109
109
  id?: number;
110
110
  where?: Record<string, any>;
111
111
  data: Partial<{
@@ -124,6 +124,7 @@ export declare const UomModel: ({ prisma, accountId, actionUserId }: {
124
124
  metric_type_display_name: string | null;
125
125
  decimal_digit: number | null;
126
126
  }>;
127
+ disableRollback?: Boolean;
127
128
  }) => Promise<{
128
129
  status: number | null;
129
130
  name: string | null;
@@ -145,7 +145,7 @@ export declare const LocationModel: ({ prisma, accountId, actionUserId }: {
145
145
  location_type: string | null;
146
146
  location_code: string | null;
147
147
  }[]>;
148
- update: ({ id, where, data }: {
148
+ update: ({ id, where, data, disableRollback }: {
149
149
  id?: number;
150
150
  where?: Record<string, any>;
151
151
  data: Partial<{
@@ -173,6 +173,7 @@ export declare const LocationModel: ({ prisma, accountId, actionUserId }: {
173
173
  location_type: string | null;
174
174
  location_code: string | null;
175
175
  }>;
176
+ disableRollback?: Boolean;
176
177
  }) => Promise<{
177
178
  status: number;
178
179
  area: string | null;
@@ -109,7 +109,7 @@ export declare const LocationRackModel: ({ prisma, accountId, actionUserId }: {
109
109
  rack_sequence: bigint | null;
110
110
  rack_type: string | null;
111
111
  }[]>;
112
- update: ({ id, where, data }: {
112
+ update: ({ id, where, data, disableRollback }: {
113
113
  id?: number;
114
114
  where?: Record<string, any>;
115
115
  data: Partial<{
@@ -128,6 +128,7 @@ export declare const LocationRackModel: ({ prisma, accountId, actionUserId }: {
128
128
  rack_sequence: bigint | null;
129
129
  rack_type: string | null;
130
130
  }>;
131
+ disableRollback?: Boolean;
131
132
  }) => Promise<{
132
133
  status: number;
133
134
  createdatetime: Date | null;