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.
- package/dist/controllers/injection_field/injectionFieldController.js +48 -27
- package/dist/controllers/injection_field/injectionFieldController.js.map +1 -1
- package/dist/models/ModelFactory.d.ts +2 -1
- package/dist/models/ModelFactory.js +12 -6
- package/dist/models/ModelFactory.js.map +1 -1
- package/dist/models/account/AccountModel.d.ts +2 -1
- package/dist/models/branch/BranchModel.d.ts +2 -1
- package/dist/models/branch_user/BranchUserModel.d.ts +2 -1
- package/dist/models/business/BusinessModel.d.ts +2 -1
- package/dist/models/group/GroupModel.d.ts +2 -1
- package/dist/models/group/GroupOwnerModel.d.ts +2 -1
- package/dist/models/injection_field/DocumentInjectionFieldModel.d.ts +2 -1
- package/dist/models/injection_field/InjectionFieldModel.d.ts +2 -1
- package/dist/models/injection_field/ItemInjectionFieldModel.d.ts +2 -1
- package/dist/models/injection_field/LogisticInjectionFieldModel.d.ts +2 -1
- package/dist/models/injection_field/RepositoryInjectionFieldModel.d.ts +2 -1
- package/dist/models/injection_field/UserInjectionFieldModel.d.ts +2 -1
- package/dist/models/item/BrandModel.d.ts +2 -1
- package/dist/models/item/CategoryModel.d.ts +2 -1
- package/dist/models/item/ItemModel.d.ts +2 -1
- package/dist/models/item/ProductModel.d.ts +2 -1
- package/dist/models/item/UomModel.d.ts +2 -1
- package/dist/models/location/LocationModel.d.ts +2 -1
- package/dist/models/location/LocationRackModel.d.ts +2 -1
- package/dist/models/location/LocationSlotModel.d.ts +2 -1
- package/dist/models/region/AreaModel.d.ts +2 -1
- package/dist/models/region/CountryModel.d.ts +2 -1
- package/dist/models/region/StateModel.d.ts +2 -1
- package/dist/models/user/AdministratorModel.d.ts +2 -1
- package/dist/models/user/CustomerModel.d.ts +2 -1
- package/dist/models/user/RetailerModel.d.ts +2 -1
- package/dist/models/user/UserModel.d.ts +2 -1
- package/dist/models/user/UserPropModel.d.ts +2 -1
- package/dist/models/user/UserStatusModel.d.ts +2 -1
- package/dist/models/user/WorkerModel.d.ts +2 -1
- package/dist/schema/payload/injection_field/schemaInjectionField.d.ts +509 -33
- package/dist/schema/payload/injection_field/schemaInjectionField.js +53 -23
- package/dist/schema/payload/injection_field/schemaInjectionField.js.map +1 -1
- package/dist/services/injection_field/DocumentInjectionFieldService.d.ts +1 -53
- package/dist/services/injection_field/DocumentInjectionFieldService.js +21 -4
- package/dist/services/injection_field/DocumentInjectionFieldService.js.map +1 -1
- package/dist/services/injection_field/ItemInjectionFieldService.d.ts +5 -54
- package/dist/services/injection_field/ItemInjectionFieldService.js +54 -12
- package/dist/services/injection_field/ItemInjectionFieldService.js.map +1 -1
- package/dist/services/injection_field/LogisticInjectionFieldService.d.ts +1 -14
- package/dist/services/injection_field/LogisticInjectionFieldService.js +21 -4
- package/dist/services/injection_field/LogisticInjectionFieldService.js.map +1 -1
- package/dist/services/injection_field/RepositoryInjectionFieldService.d.ts +1 -19
- package/dist/services/injection_field/RepositoryInjectionFieldService.js +21 -4
- package/dist/services/injection_field/RepositoryInjectionFieldService.js.map +1 -1
- package/dist/services/injection_field/UserInjectionFieldService.d.ts +1 -29
- package/dist/services/injection_field/UserInjectionFieldService.js +21 -4
- package/dist/services/injection_field/UserInjectionFieldService.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/schemaUtils.d.ts +1 -0
- package/dist/utils/schemaUtils.js +14 -1
- package/dist/utils/schemaUtils.js.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
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 (
|
|
90
|
-
|
|
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 (
|
|
102
|
-
|
|
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;
|