storemw-core-api 1.0.149 → 1.0.150
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/app.js +3 -1
- package/dist/app.js.map +1 -1
- package/dist/controllers/access_control/accessControlRoleController.d.ts +11 -0
- package/dist/controllers/access_control/accessControlRoleController.js +156 -0
- package/dist/controllers/access_control/accessControlRoleController.js.map +1 -0
- package/dist/controllers/access_control/accessControlUserController.d.ts +7 -0
- package/dist/controllers/access_control/accessControlUserController.js +140 -0
- package/dist/controllers/access_control/accessControlUserController.js.map +1 -0
- package/dist/controllers/index.d.ts +3 -0
- package/dist/controllers/index.js +16 -2
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/repository/repositoryController.d.ts +12 -0
- package/dist/controllers/repository/repositoryController.js +249 -0
- package/dist/controllers/repository/repositoryController.js.map +1 -0
- package/dist/middlewares/route/index.d.ts +2 -0
- package/dist/middlewares/route/index.js +15 -2
- package/dist/middlewares/route/index.js.map +1 -1
- package/dist/middlewares/route/validateAccessControl.d.ts +7 -0
- package/dist/middlewares/route/validateAccessControl.js +28 -0
- package/dist/middlewares/route/validateAccessControl.js.map +1 -0
- package/dist/middlewares/route/validateRepository.d.ts +4 -0
- package/dist/middlewares/route/validateRepository.js +14 -24
- package/dist/middlewares/route/validateRepository.js.map +1 -1
- package/dist/models/access_control/AccessControlRoleModel.d.ts +228 -0
- package/dist/models/access_control/AccessControlRoleModel.js +13 -0
- package/dist/models/access_control/AccessControlRoleModel.js.map +1 -0
- package/dist/models/access_control/AccessControlRolePolicyModel.d.ts +206 -0
- package/dist/models/access_control/AccessControlRolePolicyModel.js +13 -0
- package/dist/models/access_control/AccessControlRolePolicyModel.js.map +1 -0
- package/dist/models/access_control/AccessControlUserRoleModel.d.ts +206 -0
- package/dist/models/access_control/AccessControlUserRoleModel.js +13 -0
- package/dist/models/access_control/AccessControlUserRoleModel.js.map +1 -0
- package/dist/models/index.d.ts +18 -0
- package/dist/models/index.js +30 -2
- package/dist/models/index.js.map +1 -1
- package/dist/models/repository/RepositoryCartonModel.d.ts +312 -0
- package/dist/models/repository/RepositoryCartonModel.js +13 -0
- package/dist/models/repository/RepositoryCartonModel.js.map +1 -0
- package/dist/models/repository/RepositoryContainerModel.d.ts +268 -0
- package/dist/models/repository/RepositoryContainerModel.js +13 -0
- package/dist/models/repository/RepositoryContainerModel.js.map +1 -0
- package/dist/models/repository/RepositoryModel.d.ts +235 -0
- package/dist/models/repository/RepositoryModel.js +13 -0
- package/dist/models/repository/RepositoryModel.js.map +1 -0
- package/dist/models/repository/RepositoryPackageItemModel.d.ts +334 -0
- package/dist/models/repository/RepositoryPackageItemModel.js +13 -0
- package/dist/models/repository/RepositoryPackageItemModel.js.map +1 -0
- package/dist/models/repository/RepositoryPackageModel.d.ts +323 -0
- package/dist/models/repository/RepositoryPackageModel.js +13 -0
- package/dist/models/repository/RepositoryPackageModel.js.map +1 -0
- package/dist/models/repository/RepositoryPalletModel.d.ts +301 -0
- package/dist/models/repository/RepositoryPalletModel.js +13 -0
- package/dist/models/repository/RepositoryPalletModel.js.map +1 -0
- package/dist/routes/access_control/accessControlPoliciesRoutes.d.ts +2 -0
- package/dist/routes/access_control/accessControlPoliciesRoutes.js +11 -0
- package/dist/routes/access_control/accessControlPoliciesRoutes.js.map +1 -0
- package/dist/routes/access_control/accessControlRoleRoutes.d.ts +2 -0
- package/dist/routes/access_control/accessControlRoleRoutes.js +15 -0
- package/dist/routes/access_control/accessControlRoleRoutes.js.map +1 -0
- package/dist/routes/access_control/accessControlRolesRoutes.d.ts +2 -0
- package/dist/routes/access_control/accessControlRolesRoutes.js +13 -0
- package/dist/routes/access_control/accessControlRolesRoutes.js.map +1 -0
- package/dist/routes/access_control/accessControlRoutes.d.ts +0 -1
- package/dist/routes/access_control/accessControlRoutes.js +8 -5
- package/dist/routes/access_control/accessControlRoutes.js.map +1 -1
- package/dist/routes/access_control/accessControlUsersRoutes.d.ts +3 -0
- package/dist/routes/access_control/accessControlUsersRoutes.js +13 -0
- package/dist/routes/access_control/accessControlUsersRoutes.js.map +1 -0
- package/dist/routes/index.d.ts +2 -0
- package/dist/routes/index.js +5 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/repository/repositoriesRoutes.d.ts +2 -0
- package/dist/routes/repository/repositoriesRoutes.js +13 -0
- package/dist/routes/repository/repositoriesRoutes.js.map +1 -0
- package/dist/routes/repository/repositoryRoutes.d.ts +2 -0
- package/dist/routes/repository/repositoryRoutes.js +15 -0
- package/dist/routes/repository/repositoryRoutes.js.map +1 -0
- package/dist/schema/middleware/route/index.d.ts +2 -2
- package/dist/schema/middleware/route/index.js +2 -1
- package/dist/schema/middleware/route/index.js.map +1 -1
- package/dist/schema/middleware/route/schemaAccessControl.d.ts +3 -0
- package/dist/schema/middleware/route/schemaAccessControl.js +6 -1
- package/dist/schema/middleware/route/schemaAccessControl.js.map +1 -1
- package/dist/schema/middleware/route/schemaRepository.d.ts +2 -2
- package/dist/schema/payload/access_control/schemaAccessControlRole.d.ts +219 -0
- package/dist/schema/payload/access_control/schemaAccessControlRole.js +41 -0
- package/dist/schema/payload/access_control/schemaAccessControlRole.js.map +1 -0
- package/dist/schema/payload/access_control/schemaAccessControlUser.d.ts +54 -0
- package/dist/schema/payload/access_control/schemaAccessControlUser.js +34 -0
- package/dist/schema/payload/access_control/schemaAccessControlUser.js.map +1 -0
- package/dist/schema/payload/business/schemaBusiness.d.ts +16 -1
- package/dist/schema/payload/business/schemaBusiness.js +8 -12
- package/dist/schema/payload/business/schemaBusiness.js.map +1 -1
- package/dist/schema/payload/index.d.ts +8 -0
- package/dist/schema/payload/index.js +18 -2
- package/dist/schema/payload/index.js.map +1 -1
- package/dist/schema/payload/injection_field/schemaInjectionField.d.ts +20 -134
- package/dist/schema/payload/injection_field/schemaInjectionField.js +8 -8
- package/dist/schema/payload/injection_field/schemaInjectionField.js.map +1 -1
- package/dist/schema/payload/repository/schemaRepository.d.ts +66 -0
- package/dist/schema/payload/repository/schemaRepository.js +26 -0
- package/dist/schema/payload/repository/schemaRepository.js.map +1 -0
- package/dist/schema/payload/repository/schemaRepositoryContainer.d.ts +292 -0
- package/dist/schema/payload/repository/schemaRepositoryContainer.js +41 -0
- package/dist/schema/payload/repository/schemaRepositoryContainer.js.map +1 -0
- package/dist/services/access_control/AccessControlRoleService.d.ts +49 -0
- package/dist/services/access_control/AccessControlRoleService.js +249 -0
- package/dist/services/access_control/AccessControlRoleService.js.map +1 -0
- package/dist/services/access_control/AccessControlUserService.d.ts +27 -0
- package/dist/services/access_control/AccessControlUserService.js +260 -0
- package/dist/services/access_control/AccessControlUserService.js.map +1 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.js +8 -5
- package/dist/services/index.js.map +1 -1
- package/dist/services/injection_field/InjectionFieldService.d.ts +4 -2
- package/dist/services/injection_field/RepositoryInjectionFieldService.d.ts +14 -5
- package/dist/services/injection_field/RepositoryInjectionFieldService.js +6 -2
- package/dist/services/injection_field/RepositoryInjectionFieldService.js.map +1 -1
- package/dist/services/repository/RepositoryContainerService.d.ts +64 -0
- package/dist/services/repository/RepositoryContainerService.js +187 -0
- package/dist/services/repository/RepositoryContainerService.js.map +1 -0
- package/dist/services/repository/RepositoryMainService.d.ts +80 -0
- package/dist/services/repository/RepositoryMainService.js +143 -0
- package/dist/services/repository/RepositoryMainService.js.map +1 -0
- package/dist/services/repository/RepositoryService.d.ts +46 -0
- package/dist/services/repository/RepositoryService.js +133 -0
- package/dist/services/repository/RepositoryService.js.map +1 -0
- package/dist/utils/accessControlUtils.d.ts +17 -0
- package/dist/utils/accessControlUtils.js +8 -0
- package/dist/utils/accessControlUtils.js.map +1 -0
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/zodUtils.d.ts +13 -0
- package/dist/utils/zodUtils.js +17 -1
- package/dist/utils/zodUtils.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +188 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepositoryInjectionFieldService.js","sourceRoot":"","sources":["../../../src/services/injection_field/RepositoryInjectionFieldService.ts"],"names":[],"mappings":";;;AAAA,qCAGkB;AAIlB,mCAAmF;
|
|
1
|
+
{"version":3,"file":"RepositoryInjectionFieldService.js","sourceRoot":"","sources":["../../../src/services/injection_field/RepositoryInjectionFieldService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n RepositoryInjectionFieldModel,\n ModelRepositoryInjectionFieldFields,\n} from \"@/models\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { convertPayloadByTableSchema, validateModelFieldsWithData } from \"@/utils\";\n\ntype RepositoryInjectionFieldMap = {\n container: {\n repository: { repositoryId: any };\n // repository_item: { repositoryId: any; };\n },\n pallet: {\n repository: { repositoryId: any };\n // repository_item: { repositoryId: any; };\n },\n carton: {\n repository: { repositoryId: any };\n // repository_item: { repositoryId: any; };\n },\n package: {\n repository: { repositoryId: any };\n // repository_item: { repositoryId: any; };\n },\n package_item: {\n repository: { repositoryId: any };\n // repository_item: { repositoryId: any; };\n };\n};\n\ntype RepositoryInjectionFieldModule = keyof RepositoryInjectionFieldMap;\n// type RepositoryInjectionFieldRef<M extends RepositoryInjectionFieldModule> = keyof RepositoryInjectionFieldMap[M];\n\nexport const repositoryModulePrefixMap: Record<RepositoryInjectionFieldModule, string> = {\n container: \"cont\",\n pallet: \"pl\",\n carton: \"cn\",\n package: \"pk\",\n package_item: \"pki\"\n};\n\n// export const repositoryRefPrefixMap: Record<\"repository\" | \"repository_item\", string> = {\nexport const repositoryRefPrefixMap: Record<\"repository\", string> = {\n repository: \"repo\",\n // repository_item: \"repo_item\",\n};\n\nexport type RepositoryInjectionFieldModuleRef = {\n [M in RepositoryInjectionFieldModule]: {\n [R in keyof RepositoryInjectionFieldMap[M]]: {\n module: M;\n ref: R;\n } & RepositoryInjectionFieldMap[M][R];\n }[keyof RepositoryInjectionFieldMap[M]];\n}[RepositoryInjectionFieldModule];\n\nexport type RepositoryInjectionFieldServiceProps = DefaultServiceProps & {};\n\nexport type RepositoryInjectionFieldRemoveProps = {\n ids: number[]\n};\n\nexport type RepositoryInjectionFieldReplaceProps = {\n data: RepositoryInjectionFieldModuleRef & {\n fields: any\n }\n}\n\nconst getReplacePayload = (data: RepositoryInjectionFieldReplaceProps[\"data\"]) => {\n\n let { module, ref, repositoryId } = data\n\n let payload: Record<string, any> = {};\n\n payload = {\n ...payload,\n ...{\n [`${ModelRepositoryInjectionFieldFields.field_module}`]: module,\n [`${ModelRepositoryInjectionFieldFields.field_ref}`]: ref,\n }\n }\n\n if (\"repositoryId\" in data) {\n payload = { ...payload, ...(data?.repositoryId ? { [`${ModelRepositoryInjectionFieldFields.repository_id}`]: repositoryId } : {}) }\n }\n\n const rest = data.fields\n\n // apply dynamic prefix: refPrefix_modulePrefix_fieldKey\n const refPrefix = repositoryRefPrefixMap[ref as keyof typeof repositoryRefPrefixMap] ?? ref;\n const modulePrefix = repositoryModulePrefixMap[module as RepositoryInjectionFieldModule] ?? module;\n\n for (const [key, value] of Object.entries(rest)) {\n payload[`${refPrefix}_${modulePrefix}_${key}`] = value;\n }\n\n return payload\n\n}\n\nexport const RepositoryInjectionFieldService = (props: RepositoryInjectionFieldServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const repositoryInjectionFieldModel = RepositoryInjectionFieldModel({ ...rest })\n\n const replaceRepositoryInjectionField = async ({ data }: RepositoryInjectionFieldReplaceProps) => {\n\n const _data = getReplacePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create payload: ${JSON.stringify(_data)}`);\n }\n\n const where: Record<string, any> = {\n [ModelRepositoryInjectionFieldFields.field_module]: data.module,\n [ModelRepositoryInjectionFieldFields.field_ref]: data.ref,\n ...(data?.repositoryId ? { [ModelRepositoryInjectionFieldFields.repository_id]: data.repositoryId } : {}),\n };\n\n // Narrow: only include branchId if data.ref === \"branch\"\n // if (data.ref === \"branch\") {\n // where[ModelRepositoryInjectionFieldFields.branch_id] = (data as Extract<RepositoryInjectionFieldModuleRef, { ref: \"branch\" }>).branchId;\n // }\n\n let modelFields = await repositoryInjectionFieldModel.getFields()\n\n let finalData = convertPayloadByTableSchema(_data, modelFields)\n\n // console.log('modelFields', modelFields)\n // console.log('finalData', finalData)\n\n\n // check the request fields are in the exactly schema\n const resultInvalidFields = validateModelFieldsWithData(modelFields, finalData)\n\n if (resultInvalidFields.length > 0) {\n throw Error(`Invalid injection fields: ${resultInvalidFields.join(\", \")} (Request: ${Object.keys(finalData).join(\", \")})`)\n }\n\n // check the record exists\n let exists = await repositoryInjectionFieldModel.get({ where })\n\n let response: any = {}\n\n if (exists) { // update existing\n\n // remove unwanted to override\n delete finalData.field_module;\n delete finalData.field_ref;\n delete finalData.repository_id;\n delete finalData.repository_item_id;\n\n response = await repositoryInjectionFieldModel.update({ data: finalData, where, disableRollback: true })\n\n } else { // create new\n response = await repositoryInjectionFieldModel.create({ data: finalData })\n }\n\n return response\n }\n\n return {\n replaceRepositoryInjectionField\n }\n\n}\n\n\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { QueryList } from "../../schema/common";
|
|
2
|
+
import { DefaultServiceProps } from "../../utils";
|
|
3
|
+
export declare const repositoryContainerDataTypes: {};
|
|
4
|
+
export type RepositoryContainerDataType = keyof typeof repositoryContainerDataTypes;
|
|
5
|
+
export type RepositoryContainerServiceProps = DefaultServiceProps & {};
|
|
6
|
+
export type RepositoryContainerGetProps = {
|
|
7
|
+
repositoryId: number;
|
|
8
|
+
datatypes: RepositoryContainerDataType[];
|
|
9
|
+
};
|
|
10
|
+
export type RepositoryContainerListProps = QueryList & {
|
|
11
|
+
datatypes: RepositoryContainerDataType[];
|
|
12
|
+
};
|
|
13
|
+
export type RepositoryContainerRemoveProps = {
|
|
14
|
+
repositoryIds: BigInt[];
|
|
15
|
+
};
|
|
16
|
+
export type RepositoryContainer = {
|
|
17
|
+
containerNumber: string;
|
|
18
|
+
containerDescription: string;
|
|
19
|
+
arrivalDate?: Date;
|
|
20
|
+
loadDate?: Date;
|
|
21
|
+
sealNumber?: string;
|
|
22
|
+
inspectionProviderName?: string;
|
|
23
|
+
shippingProviderName?: string;
|
|
24
|
+
repositoryId: number;
|
|
25
|
+
};
|
|
26
|
+
export type RepositoryContainerCreateProps = {
|
|
27
|
+
data: {
|
|
28
|
+
container: RepositoryContainer;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type RepositoryContainerUpdateProps = {
|
|
32
|
+
repositoryId: number;
|
|
33
|
+
data: {
|
|
34
|
+
container: Omit<RepositoryContainer, "repositoryId">;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export declare const RepositoryContainerService: (props: RepositoryContainerServiceProps) => {
|
|
38
|
+
createRepositoryContainer: ({ data }: RepositoryContainerCreateProps) => Promise<any>;
|
|
39
|
+
updateRepositoryContainer: ({ repositoryId, data }: RepositoryContainerUpdateProps) => Promise<any>;
|
|
40
|
+
getRepositoryContainer: ({ repositoryId, datatypes }: RepositoryContainerGetProps) => Promise<any>;
|
|
41
|
+
listRepositoryContainers: ({ limit, offset, filters, sortfield, sortorder, datatypes }: RepositoryContainerListProps) => Promise<{
|
|
42
|
+
data: any[];
|
|
43
|
+
total: number;
|
|
44
|
+
}>;
|
|
45
|
+
removeRepositoryContainers: ({ repositoryIds }: RepositoryContainerRemoveProps) => Promise<{
|
|
46
|
+
createdatetime: Date | null;
|
|
47
|
+
createuserid: bigint;
|
|
48
|
+
updatedatetime: Date | null;
|
|
49
|
+
updateuserid: bigint;
|
|
50
|
+
isdelete: boolean | null;
|
|
51
|
+
istrash: boolean | null;
|
|
52
|
+
accountid: bigint;
|
|
53
|
+
repository_id: bigint;
|
|
54
|
+
repository_container_id: bigint;
|
|
55
|
+
container_number: string | null;
|
|
56
|
+
container_description: string | null;
|
|
57
|
+
seal_number: string | null;
|
|
58
|
+
shipping_provider_name: string | null;
|
|
59
|
+
inspection_provider_name: string | null;
|
|
60
|
+
load_date: Date | null;
|
|
61
|
+
arrival_date: Date | null;
|
|
62
|
+
}[]>;
|
|
63
|
+
getDataTypes: () => unknown[];
|
|
64
|
+
};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RepositoryContainerService = exports.repositoryContainerDataTypes = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
const lib_1 = require("../../lib");
|
|
7
|
+
exports.repositoryContainerDataTypes = {
|
|
8
|
+
// location: "location",
|
|
9
|
+
};
|
|
10
|
+
const getCreatePayload = (data) => {
|
|
11
|
+
if ("container" in data) {
|
|
12
|
+
return {
|
|
13
|
+
[`${models_1.ModelRepositoryContainerFields.repository_id}`]: data.container.repositoryId,
|
|
14
|
+
[`${models_1.ModelRepositoryContainerFields.container_number}`]: data.container.containerNumber,
|
|
15
|
+
[`${models_1.ModelRepositoryContainerFields.container_description}`]: data.container.containerDescription,
|
|
16
|
+
[`${models_1.ModelRepositoryContainerFields.arrival_date}`]: data.container.arrivalDate,
|
|
17
|
+
[`${models_1.ModelRepositoryContainerFields.load_date}`]: data.container.loadDate,
|
|
18
|
+
[`${models_1.ModelRepositoryContainerFields.seal_number}`]: data.container.sealNumber,
|
|
19
|
+
[`${models_1.ModelRepositoryContainerFields.inspection_provider_name}`]: data.container.inspectionProviderName ?? "",
|
|
20
|
+
[`${models_1.ModelRepositoryContainerFields.shipping_provider_name}`]: data.container.shippingProviderName ?? ""
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
};
|
|
25
|
+
const getUpdatePayload = (data) => {
|
|
26
|
+
if ("container" in data) {
|
|
27
|
+
return {
|
|
28
|
+
...(data.container.containerNumber ? { [`${models_1.ModelRepositoryContainerFields.container_number}`]: data.container.containerNumber } : {}),
|
|
29
|
+
...(data.container.containerDescription ? { [`${models_1.ModelRepositoryContainerFields.container_description}`]: data.container.containerDescription } : {}),
|
|
30
|
+
...(data.container.arrivalDate ? { [`${models_1.ModelRepositoryContainerFields.arrival_date}`]: utils_1.dayjs.utc(data.container.arrivalDate).toDate() } : {}),
|
|
31
|
+
...(data.container.loadDate ? { [`${models_1.ModelRepositoryContainerFields.load_date}`]: utils_1.dayjs.utc(data.container.loadDate).toDate() } : {}),
|
|
32
|
+
...(data.container.sealNumber ? { [`${models_1.ModelRepositoryContainerFields.seal_number}`]: data.container.sealNumber } : {}),
|
|
33
|
+
...(data.container.inspectionProviderName ? { [`${models_1.ModelRepositoryContainerFields.inspection_provider_name}`]: data.container.inspectionProviderName } : {}),
|
|
34
|
+
...(data.container.shippingProviderName ? { [`${models_1.ModelRepositoryContainerFields.shipping_provider_name}`]: data.container.shippingProviderName } : {}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
};
|
|
39
|
+
let mainSqlSelect = {
|
|
40
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.repository_container_id}`]: "repository_container_id",
|
|
41
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.container_number}`]: "container_number",
|
|
42
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.container_description}`]: "container_description",
|
|
43
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.arrival_date}`]: "arrival_date",
|
|
44
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.load_date}`]: "load_date",
|
|
45
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.inspection_provider_name}`]: "inspection_provider_name",
|
|
46
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.shipping_provider_name}`]: "shipping_provider_name",
|
|
47
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.seal_number}`]: "seal_number",
|
|
48
|
+
};
|
|
49
|
+
let repositorySqlSelect = {
|
|
50
|
+
[`repo.${models_1.ModelRepositoryFields.repository_id}`]: "repository_id",
|
|
51
|
+
[`repo.${models_1.ModelRepositoryFields.repository_number}`]: "repository_number",
|
|
52
|
+
[`repo.${models_1.ModelRepositoryFields.repository_date}`]: "repository_date",
|
|
53
|
+
[`repo.${models_1.ModelRepositoryFields.repository_type}`]: "repository_type",
|
|
54
|
+
[`repo.${models_1.ModelRepositoryFields.description}`]: "repository_description",
|
|
55
|
+
[`repo.${models_1.ModelRepositoryFields.remark}`]: "repository_remark",
|
|
56
|
+
};
|
|
57
|
+
let defaultSqlSelect = {
|
|
58
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.createdatetime}`]: "createdatetime",
|
|
59
|
+
[`creator.${models_1.ModelUserFields.login_username}`]: "createusername",
|
|
60
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.updatedatetime}`]: "updatedatetime",
|
|
61
|
+
[`updater.${models_1.ModelUserFields.login_username}`]: "updateusername",
|
|
62
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.isdelete}`]: "isdelete",
|
|
63
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.istrash}`]: "istrash",
|
|
64
|
+
[`repo_cont.${models_1.ModelRepositoryContainerFields.accountid}`]: "accountid",
|
|
65
|
+
};
|
|
66
|
+
const RepositoryContainerService = (props) => {
|
|
67
|
+
const { ...rest } = props;
|
|
68
|
+
const repositoryContainerModel = (0, models_1.RepositoryContainerModel)({ ...rest });
|
|
69
|
+
// const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: "user" })
|
|
70
|
+
// const userInjectionFieldModel = UserInjectionFieldModel({ ...rest })
|
|
71
|
+
const createRepositoryContainer = async ({ data }) => {
|
|
72
|
+
const _data = getCreatePayload(data);
|
|
73
|
+
if (!_data) {
|
|
74
|
+
throw new Error(`Invalid create repository container payload: ${JSON.stringify(_data)}`);
|
|
75
|
+
}
|
|
76
|
+
let response = await repositoryContainerModel.create({ data: _data });
|
|
77
|
+
return await getRepositoryContainer({ repositoryId: Number(response?.repository_id ?? 0), datatypes: [] });
|
|
78
|
+
};
|
|
79
|
+
const updateRepositoryContainer = async ({ repositoryId, data }) => {
|
|
80
|
+
const _data = getUpdatePayload(data);
|
|
81
|
+
if (!_data) {
|
|
82
|
+
throw new Error(`Invalid update repository container payload: ${JSON.stringify(_data)}`);
|
|
83
|
+
}
|
|
84
|
+
let response;
|
|
85
|
+
if (Object.keys(_data).length > 0) {
|
|
86
|
+
response = await repositoryContainerModel.update({
|
|
87
|
+
where: {
|
|
88
|
+
[`${models_1.ModelRepositoryContainerFields.repository_id}`]: repositoryId
|
|
89
|
+
},
|
|
90
|
+
data: _data
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return await getRepositoryContainer({ repositoryId: Number(repositoryId), datatypes: [] });
|
|
94
|
+
};
|
|
95
|
+
const getRepositoryContainer = async ({ repositoryId, datatypes = [] }) => {
|
|
96
|
+
let { data } = await listRepositoryContainers({
|
|
97
|
+
limit: 1,
|
|
98
|
+
offset: 0,
|
|
99
|
+
filters: [{ field: `${models_1.ModelRepositoryContainerFields.repository_id}`, operator: "=", value: repositoryId }],
|
|
100
|
+
sortfield: `${models_1.ModelRepositoryContainerFields.repository_id}`,
|
|
101
|
+
sortorder: "ASC",
|
|
102
|
+
datatypes
|
|
103
|
+
});
|
|
104
|
+
return data[0] ?? null;
|
|
105
|
+
};
|
|
106
|
+
const listRepositoryContainers = async ({ limit, offset, filters, sortfield, sortorder, datatypes = [] }) => {
|
|
107
|
+
let data = [];
|
|
108
|
+
let sqlSelect = [
|
|
109
|
+
`COUNT(*) OVER() as filtered_count`,
|
|
110
|
+
(0, lib_1.buildSqlSelect)(``, mainSqlSelect),
|
|
111
|
+
(0, lib_1.buildSqlSelect)(``, repositorySqlSelect),
|
|
112
|
+
(0, lib_1.buildSqlSelect)(``, defaultSqlSelect),
|
|
113
|
+
];
|
|
114
|
+
let sqlRelation = [
|
|
115
|
+
(0, lib_1.buildSqlRelation)("left", "repo_cont", "repositories", "repo", ["repo_cont.repository_id = repo.repository_id", "repo_cont.isdelete = false", "repo_cont.istrash = false"]),
|
|
116
|
+
(0, lib_1.buildSqlRelation)("left", "repo_cont", "users", "creator", ["repo_cont.createuserid = creator.user_id", "creator.isdelete = false", "creator.istrash = false"]),
|
|
117
|
+
(0, lib_1.buildSqlRelation)("left", "repo_cont", "users", "updater", ["repo_cont.updateuserid = updater.user_id", "updater.isdelete = false", "updater.istrash = false"]),
|
|
118
|
+
];
|
|
119
|
+
let sqlGroupBy = [
|
|
120
|
+
...Object.keys(mainSqlSelect),
|
|
121
|
+
...Object.keys(repositorySqlSelect),
|
|
122
|
+
...Object.keys(defaultSqlSelect)
|
|
123
|
+
];
|
|
124
|
+
let filterColumns = {
|
|
125
|
+
...mainSqlSelect,
|
|
126
|
+
...repositorySqlSelect,
|
|
127
|
+
...defaultSqlSelect
|
|
128
|
+
};
|
|
129
|
+
// if (datatypes.includes(repositoryContainerDataTypes.driverInjectionFields)) {
|
|
130
|
+
// let activeInjectionFields = await injectionFieldService.listActiveInjectionFields("user", "driver")
|
|
131
|
+
// const driverInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect("uif", activeInjectionFields)
|
|
132
|
+
// filterColumns = { ...filterColumns, ...driverInjectionFieldSqlSelect }
|
|
133
|
+
// sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, driverInjectionFieldSqlSelect)] : [])]
|
|
134
|
+
// sqlRelation = [...sqlRelation, buildSqlRelation("left", "dvr", "user_injection_fields", "uif", ["dvr.user_id = uif.user_id", "uif.field_ref = 'user'", "uif.field_module = 'driver'", "uif.isdelete = false", "uif.istrash = false"])]
|
|
135
|
+
// sqlGroupBy = [...sqlGroupBy, ...Object.keys(driverInjectionFieldSqlSelect)]
|
|
136
|
+
// }
|
|
137
|
+
let sqlWhere = [
|
|
138
|
+
`repo_cont.isdelete = false`,
|
|
139
|
+
`repo_cont.istrash = false`,
|
|
140
|
+
...(filters.length ? [(0, lib_1.buildSqlWhere)(filters, filterColumns)?.where] : []),
|
|
141
|
+
];
|
|
142
|
+
let sqlOrderby = (0, lib_1.buildSqlOrderBy)(sortfield, sortorder);
|
|
143
|
+
let sqlLimitOffset = (0, lib_1.buildSqlLimitOffset)(limit, offset);
|
|
144
|
+
const sqlRaw = (0, lib_1.buildSqlRawSelect)({
|
|
145
|
+
tableName: "repository_containers",
|
|
146
|
+
mainAlias: "repo_cont",
|
|
147
|
+
accountId: rest.accountId,
|
|
148
|
+
sqlSelect,
|
|
149
|
+
sqlRelation,
|
|
150
|
+
sqlWhere,
|
|
151
|
+
sqlGroupBy,
|
|
152
|
+
sqlOrderby,
|
|
153
|
+
sqlLimitOffset
|
|
154
|
+
});
|
|
155
|
+
data = await repositoryContainerModel.raw(sqlRaw);
|
|
156
|
+
const response = {
|
|
157
|
+
data: data.map(({ filtered_count, ...rest }) => rest),
|
|
158
|
+
total: data.length ? Number(data[0].filtered_count) : 0
|
|
159
|
+
};
|
|
160
|
+
return response;
|
|
161
|
+
};
|
|
162
|
+
const removeRepositoryContainers = async ({ repositoryIds }) => {
|
|
163
|
+
if (!repositoryIds.length)
|
|
164
|
+
(0, utils_1.throwError)('repositoryIds is required');
|
|
165
|
+
const response = await repositoryContainerModel.remove({
|
|
166
|
+
where: {
|
|
167
|
+
[`${models_1.ModelRepositoryContainerFields.repository_id}`]: {
|
|
168
|
+
in: repositoryIds
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return response;
|
|
173
|
+
};
|
|
174
|
+
const getDataTypes = () => {
|
|
175
|
+
return Object.values(exports.repositoryContainerDataTypes);
|
|
176
|
+
};
|
|
177
|
+
return {
|
|
178
|
+
createRepositoryContainer,
|
|
179
|
+
updateRepositoryContainer,
|
|
180
|
+
getRepositoryContainer,
|
|
181
|
+
listRepositoryContainers,
|
|
182
|
+
removeRepositoryContainers,
|
|
183
|
+
getDataTypes
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
exports.RepositoryContainerService = RepositoryContainerService;
|
|
187
|
+
//# sourceMappingURL=RepositoryContainerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepositoryContainerService.js","sourceRoot":"","sources":["../../../src/services/repository/RepositoryContainerService.ts"],"names":[],"mappings":"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","sourcesContent":["import { dayjs, logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n RepositoryContainerModel,\n ModelRepositoryContainerFields,\n ModelRepositoryFields\n} from \"@/models\";\n\n// import { InjectionFieldService, userParentSqlSelect } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { toFieldMap, buildSqlRawSelect, buildSqlRelation, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport const repositoryContainerDataTypes = {\n // location: \"location\",\n}\n\nexport type RepositoryContainerDataType = keyof typeof repositoryContainerDataTypes;\n\nexport type RepositoryContainerServiceProps = DefaultServiceProps & {};\n\nexport type RepositoryContainerGetProps = {\n repositoryId: number,\n datatypes: RepositoryContainerDataType[]\n};\n\nexport type RepositoryContainerListProps = QueryList & {\n datatypes: RepositoryContainerDataType[]\n};\n\nexport type RepositoryContainerRemoveProps = {\n repositoryIds: BigInt[]\n};\n\nexport type RepositoryContainer = {\n containerNumber: string,\n containerDescription: string,\n arrivalDate?: Date,\n loadDate?: Date,\n sealNumber?: string\n inspectionProviderName?: string\n shippingProviderName?: string,\n repositoryId: number\n}\n\nexport type RepositoryContainerCreateProps = {\n data:\n // container\n {\n container: RepositoryContainer\n }\n}\n\nexport type RepositoryContainerUpdateProps = {\n repositoryId: number,\n data:\n // container\n {\n container: Omit<RepositoryContainer, \"repositoryId\">\n }\n}\n\nconst getCreatePayload = (data: RepositoryContainerCreateProps[\"data\"]) => {\n\n if (\"container\" in data) {\n\n return {\n [`${ModelRepositoryContainerFields.repository_id}`]: data.container.repositoryId,\n [`${ModelRepositoryContainerFields.container_number}`]: data.container.containerNumber,\n [`${ModelRepositoryContainerFields.container_description}`]: data.container.containerDescription,\n [`${ModelRepositoryContainerFields.arrival_date}`]: data.container.arrivalDate,\n [`${ModelRepositoryContainerFields.load_date}`]: data.container.loadDate,\n [`${ModelRepositoryContainerFields.seal_number}`]: data.container.sealNumber,\n [`${ModelRepositoryContainerFields.inspection_provider_name}`]: data.container.inspectionProviderName ?? \"\",\n [`${ModelRepositoryContainerFields.shipping_provider_name}`]: data.container.shippingProviderName ?? \"\"\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: RepositoryContainerUpdateProps[\"data\"]) => {\n\n if (\"container\" in data) {\n\n return {\n ...(data.container.containerNumber ? { [`${ModelRepositoryContainerFields.container_number}`]: data.container.containerNumber } : {}),\n ...(data.container.containerDescription ? { [`${ModelRepositoryContainerFields.container_description}`]: data.container.containerDescription } : {}),\n ...(data.container.arrivalDate ? { [`${ModelRepositoryContainerFields.arrival_date}`]: dayjs.utc(data.container.arrivalDate).toDate() } : {}),\n ...(data.container.loadDate ? { [`${ModelRepositoryContainerFields.load_date}`]: dayjs.utc(data.container.loadDate).toDate() } : {}),\n ...(data.container.sealNumber ? { [`${ModelRepositoryContainerFields.seal_number}`]: data.container.sealNumber } : {}),\n ...(data.container.inspectionProviderName ? { [`${ModelRepositoryContainerFields.inspection_provider_name}`]: data.container.inspectionProviderName } : {}),\n ...(data.container.shippingProviderName ? { [`${ModelRepositoryContainerFields.shipping_provider_name}`]: data.container.shippingProviderName } : {}),\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`repo_cont.${ModelRepositoryContainerFields.repository_container_id}`]: \"repository_container_id\",\n [`repo_cont.${ModelRepositoryContainerFields.container_number}`]: \"container_number\",\n [`repo_cont.${ModelRepositoryContainerFields.container_description}`]: \"container_description\",\n [`repo_cont.${ModelRepositoryContainerFields.arrival_date}`]: \"arrival_date\",\n [`repo_cont.${ModelRepositoryContainerFields.load_date}`]: \"load_date\",\n [`repo_cont.${ModelRepositoryContainerFields.inspection_provider_name}`]: \"inspection_provider_name\",\n [`repo_cont.${ModelRepositoryContainerFields.shipping_provider_name}`]: \"shipping_provider_name\",\n [`repo_cont.${ModelRepositoryContainerFields.seal_number}`]: \"seal_number\",\n}\n\nlet repositorySqlSelect = {\n [`repo.${ModelRepositoryFields.repository_id}`]: \"repository_id\",\n [`repo.${ModelRepositoryFields.repository_number}`]: \"repository_number\",\n [`repo.${ModelRepositoryFields.repository_date}`]: \"repository_date\",\n [`repo.${ModelRepositoryFields.repository_type}`]: \"repository_type\",\n [`repo.${ModelRepositoryFields.description}`]: \"repository_description\",\n [`repo.${ModelRepositoryFields.remark}`]: \"repository_remark\",\n}\n\nlet defaultSqlSelect = {\n [`repo_cont.${ModelRepositoryContainerFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`repo_cont.${ModelRepositoryContainerFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`repo_cont.${ModelRepositoryContainerFields.isdelete}`]: \"isdelete\",\n [`repo_cont.${ModelRepositoryContainerFields.istrash}`]: \"istrash\",\n [`repo_cont.${ModelRepositoryContainerFields.accountid}`]: \"accountid\",\n}\n\nexport const RepositoryContainerService = (props: RepositoryContainerServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const repositoryContainerModel = RepositoryContainerModel({ ...rest })\n\n // const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n // const userInjectionFieldModel = UserInjectionFieldModel({ ...rest })\n\n const createRepositoryContainer = async ({ data }: RepositoryContainerCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create repository container payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await repositoryContainerModel.create({ data: _data })\n\n return await getRepositoryContainer({ repositoryId: Number(response?.repository_id ?? 0), datatypes: [] })\n }\n\n const updateRepositoryContainer = async ({ repositoryId, data }: RepositoryContainerUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update repository container payload: ${JSON.stringify(_data)}`);\n }\n\n let response\n\n if (Object.keys(_data).length > 0) {\n response = await repositoryContainerModel.update({\n where: {\n [`${ModelRepositoryContainerFields.repository_id}`]: repositoryId\n },\n data: _data\n })\n }\n\n return await getRepositoryContainer({ repositoryId: Number(repositoryId), datatypes: [] })\n }\n\n const getRepositoryContainer = async ({ repositoryId, datatypes = [] }: RepositoryContainerGetProps) => {\n\n let { data } = await listRepositoryContainers({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelRepositoryContainerFields.repository_id}`, operator: \"=\", value: repositoryId }],\n sortfield: `${ModelRepositoryContainerFields.repository_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listRepositoryContainers = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: RepositoryContainerListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, repositorySqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"repo_cont\", \"repositories\", \"repo\", [\"repo_cont.repository_id = repo.repository_id\", \"repo_cont.isdelete = false\", \"repo_cont.istrash = false\"]),\n buildSqlRelation(\"left\", \"repo_cont\", \"users\", \"creator\", [\"repo_cont.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"repo_cont\", \"users\", \"updater\", [\"repo_cont.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(repositorySqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...repositorySqlSelect,\n ...defaultSqlSelect\n }\n\n // if (datatypes.includes(repositoryContainerDataTypes.driverInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"driver\")\n\n // const driverInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...driverInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, driverInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"dvr\", \"user_injection_fields\", \"uif\", [\"dvr.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'driver'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(driverInjectionFieldSqlSelect)]\n\n // }\n\n let sqlWhere = [\n `repo_cont.isdelete = false`,\n `repo_cont.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"repository_containers\",\n mainAlias: \"repo_cont\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await repositoryContainerModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeRepositoryContainers = async ({ repositoryIds }: RepositoryContainerRemoveProps) => {\n\n if (!repositoryIds.length) throwError('repositoryIds is required');\n\n const response = await repositoryContainerModel.remove({\n where: {\n [`${ModelRepositoryContainerFields.repository_id}`]: {\n in: repositoryIds\n }\n }\n });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(repositoryContainerDataTypes);\n }\n\n return {\n createRepositoryContainer,\n updateRepositoryContainer,\n getRepositoryContainer,\n listRepositoryContainers,\n removeRepositoryContainers,\n getDataTypes\n }\n\n}\n\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { DefaultServiceProps } from "../../utils";
|
|
2
|
+
import { RepositoryType } from "./RepositoryService";
|
|
3
|
+
export declare const respositoryPrefix: {
|
|
4
|
+
readonly container: "CT";
|
|
5
|
+
readonly pallet: "PL";
|
|
6
|
+
readonly carton: "CN";
|
|
7
|
+
readonly package: "PK";
|
|
8
|
+
readonly package_item: "PKI";
|
|
9
|
+
};
|
|
10
|
+
export type RepositoryMainServiceProps = DefaultServiceProps & {
|
|
11
|
+
repositoryType: RepositoryType;
|
|
12
|
+
};
|
|
13
|
+
export type RepositoryMain = {
|
|
14
|
+
repositoryType: RepositoryType;
|
|
15
|
+
remark?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
};
|
|
18
|
+
export type RepositoryMainCreateProps = {
|
|
19
|
+
repositoryType?: RepositoryType;
|
|
20
|
+
data: RepositoryMain & {
|
|
21
|
+
repositoryNumber?: string;
|
|
22
|
+
repositoryDate?: Date | null;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type RepositoryMainUpdateProps = {
|
|
26
|
+
repositoryId: number;
|
|
27
|
+
data: Omit<RepositoryMain, "repositoryType"> & {
|
|
28
|
+
repositoryDate?: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type RepositoryMainRemoveProps = {
|
|
32
|
+
repositoryIds: BigInt[];
|
|
33
|
+
};
|
|
34
|
+
export declare const RepositoryMainService: (props: RepositoryMainServiceProps) => {
|
|
35
|
+
createRepositoryMain: ({ data, repositoryType: overrideRepositoryType }: RepositoryMainCreateProps) => Promise<{
|
|
36
|
+
createdatetime: Date | null;
|
|
37
|
+
createuserid: bigint;
|
|
38
|
+
updatedatetime: Date | null;
|
|
39
|
+
updateuserid: bigint;
|
|
40
|
+
isdelete: boolean | null;
|
|
41
|
+
istrash: boolean | null;
|
|
42
|
+
accountid: bigint;
|
|
43
|
+
description: string | null;
|
|
44
|
+
remark: string | null;
|
|
45
|
+
repository_id: bigint;
|
|
46
|
+
repository_number: string | null;
|
|
47
|
+
repository_date: Date | null;
|
|
48
|
+
repository_type: string | null;
|
|
49
|
+
}>;
|
|
50
|
+
updateRepositoryMain: ({ repositoryId, data }: RepositoryMainUpdateProps) => Promise<true | {
|
|
51
|
+
createdatetime: Date | null;
|
|
52
|
+
createuserid: bigint;
|
|
53
|
+
updatedatetime: Date | null;
|
|
54
|
+
updateuserid: bigint;
|
|
55
|
+
isdelete: boolean | null;
|
|
56
|
+
istrash: boolean | null;
|
|
57
|
+
accountid: bigint;
|
|
58
|
+
description: string | null;
|
|
59
|
+
remark: string | null;
|
|
60
|
+
repository_id: bigint;
|
|
61
|
+
repository_number: string | null;
|
|
62
|
+
repository_date: Date | null;
|
|
63
|
+
repository_type: string | null;
|
|
64
|
+
}>;
|
|
65
|
+
removeRepositoryMains: ({ repositoryIds }: RepositoryMainRemoveProps) => Promise<{
|
|
66
|
+
createdatetime: Date | null;
|
|
67
|
+
createuserid: bigint;
|
|
68
|
+
updatedatetime: Date | null;
|
|
69
|
+
updateuserid: bigint;
|
|
70
|
+
isdelete: boolean | null;
|
|
71
|
+
istrash: boolean | null;
|
|
72
|
+
accountid: bigint;
|
|
73
|
+
description: string | null;
|
|
74
|
+
remark: string | null;
|
|
75
|
+
repository_id: bigint;
|
|
76
|
+
repository_number: string | null;
|
|
77
|
+
repository_date: Date | null;
|
|
78
|
+
repository_type: string | null;
|
|
79
|
+
}[]>;
|
|
80
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RepositoryMainService = exports.respositoryPrefix = void 0;
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
6
|
+
const services_1 = require("../../services");
|
|
7
|
+
exports.respositoryPrefix = {
|
|
8
|
+
container: `CT`,
|
|
9
|
+
pallet: `PL`,
|
|
10
|
+
carton: "CN",
|
|
11
|
+
package: "PK",
|
|
12
|
+
package_item: "PKI"
|
|
13
|
+
};
|
|
14
|
+
// const buildRepositoryDate = (requestRepositoryDate?: Date) => {
|
|
15
|
+
// return requestRepositoryDate ? dayjs(requestRepositoryDate).format("YYYY-MM-DD") : dayjs().format("YYYY-MM-DD")
|
|
16
|
+
// }
|
|
17
|
+
const RepositoryMainService = (props) => {
|
|
18
|
+
const { repositoryType = "container", ...rest } = props;
|
|
19
|
+
const repositoryModel = (0, models_1.RepositoryModel)({ ...rest });
|
|
20
|
+
const numberSequenceService = (0, services_1.NumberDateSequenceService)({ ...rest, field_ref: "repository", field_module: repositoryType });
|
|
21
|
+
const getCreatePayload = async (repositoryType, data) => {
|
|
22
|
+
let repositoryDate = data?.repositoryDate;
|
|
23
|
+
let repositoryNumber = data?.repositoryNumber;
|
|
24
|
+
// if specify the custom repository number - check occurance
|
|
25
|
+
if (repositoryNumber) {
|
|
26
|
+
let findSameRepositoryNumber = await repositoryModel.count({
|
|
27
|
+
where: {
|
|
28
|
+
[`${models_1.ModelRepositoryFields.repository_number}`]: `${repositoryNumber}`,
|
|
29
|
+
[`${models_1.ModelRepositoryFields.repository_type}`]: {
|
|
30
|
+
equals: repositoryType,
|
|
31
|
+
mode: "insensitive"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
if (findSameRepositoryNumber > 0) {
|
|
36
|
+
throw new Error(`Duplicate repository number(${repositoryType}) found: ${repositoryNumber}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// for override
|
|
40
|
+
if (!repositoryDate) {
|
|
41
|
+
// repositoryDate = dayjs().format("YYYY-MM-DD")
|
|
42
|
+
repositoryDate = (0, utils_1.dayjs)(repositoryDate, "YYYY-MM-DD").toDate();
|
|
43
|
+
}
|
|
44
|
+
// for override
|
|
45
|
+
if (!repositoryNumber) {
|
|
46
|
+
repositoryNumber = await buildRepositoryNumber(repositoryType, repositoryNumber, repositoryDate);
|
|
47
|
+
}
|
|
48
|
+
// final shape of the repository Date
|
|
49
|
+
// repositoryDate = buildRepositoryDate(repositoryDate)
|
|
50
|
+
return {
|
|
51
|
+
[`${models_1.ModelRepositoryFields.repository_type}`]: repositoryType,
|
|
52
|
+
[`${models_1.ModelRepositoryFields.repository_date}`]: repositoryDate,
|
|
53
|
+
[`${models_1.ModelRepositoryFields.repository_number}`]: repositoryNumber,
|
|
54
|
+
[`${models_1.ModelRepositoryFields.remark}`]: data?.remark ?? "",
|
|
55
|
+
[`${models_1.ModelRepositoryFields.description}`]: data?.description ?? "",
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
const getUpdatePayload = (data) => {
|
|
59
|
+
return {
|
|
60
|
+
...(data.repositoryDate ? { [`${models_1.ModelRepositoryFields.repository_date}`]: utils_1.dayjs.utc(data.repositoryDate).toDate() } : {}),
|
|
61
|
+
...(data.remark ? { [`${models_1.ModelRepositoryFields.remark}`]: data.remark } : {}),
|
|
62
|
+
...(data.description ? { [`${models_1.ModelRepositoryFields.description}`]: data.description } : {}),
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
const buildRepositoryNumber = async (repositoryType, requestRepositoryNumber, requestRepositoryDate) => {
|
|
66
|
+
let repositoryNumberPrefix = `${exports.respositoryPrefix[repositoryType]}`;
|
|
67
|
+
let fieldModule = "container";
|
|
68
|
+
let fieldRef = "repository";
|
|
69
|
+
if (repositoryType === "container") {
|
|
70
|
+
fieldModule = "container";
|
|
71
|
+
}
|
|
72
|
+
if (repositoryType === "pallet") {
|
|
73
|
+
fieldModule = "pallet";
|
|
74
|
+
}
|
|
75
|
+
if (repositoryType === "carton") {
|
|
76
|
+
fieldModule = "carton";
|
|
77
|
+
}
|
|
78
|
+
if (repositoryType === "package") {
|
|
79
|
+
fieldModule = "package";
|
|
80
|
+
}
|
|
81
|
+
if (repositoryType === "package_item") {
|
|
82
|
+
fieldModule = "package_item";
|
|
83
|
+
}
|
|
84
|
+
if (!requestRepositoryNumber) { // mean using running no - required number sequences
|
|
85
|
+
let sequenceDate = requestRepositoryDate ?
|
|
86
|
+
(0, utils_1.dayjs)(requestRepositoryDate).format("YYYY-MM-DD")
|
|
87
|
+
:
|
|
88
|
+
(0, utils_1.dayjs)().format("YYYY-MM-DD");
|
|
89
|
+
const payload = {
|
|
90
|
+
field_ref: fieldRef,
|
|
91
|
+
field_module: fieldModule,
|
|
92
|
+
resetMethod: "monthly",
|
|
93
|
+
formatOutputLength: 6,
|
|
94
|
+
sequenceDate
|
|
95
|
+
};
|
|
96
|
+
// create number sequence
|
|
97
|
+
let responseNumberDateSequence = await numberSequenceService.initNumberDateSequence(payload);
|
|
98
|
+
return `${repositoryNumberPrefix}-${responseNumberDateSequence.sequenceNumber.nextFormatted}`;
|
|
99
|
+
}
|
|
100
|
+
// mean override the repository number with custom input
|
|
101
|
+
return requestRepositoryNumber;
|
|
102
|
+
};
|
|
103
|
+
const createRepositoryMain = async ({ data, repositoryType: overrideRepositoryType }) => {
|
|
104
|
+
const _repositoryType = overrideRepositoryType || repositoryType;
|
|
105
|
+
const _data = await getCreatePayload(_repositoryType, data);
|
|
106
|
+
if (!_data) {
|
|
107
|
+
throw new Error(`Invalid create repository(main) payload: ${JSON.stringify(_data)}`);
|
|
108
|
+
}
|
|
109
|
+
// create repository
|
|
110
|
+
return await repositoryModel.create({ data: _data });
|
|
111
|
+
};
|
|
112
|
+
const updateRepositoryMain = async ({ repositoryId, data }) => {
|
|
113
|
+
// const _repositoryType = overrideRepositoryType || repositoryType
|
|
114
|
+
const _data = getUpdatePayload(data);
|
|
115
|
+
if (!_data) {
|
|
116
|
+
throw new Error(`Invalid update repository(main) payload: ${JSON.stringify(_data)}`);
|
|
117
|
+
}
|
|
118
|
+
if (Object.keys(_data).length <= 0) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
// update repository
|
|
122
|
+
return await repositoryModel.update({ id: repositoryId, data: _data });
|
|
123
|
+
};
|
|
124
|
+
const removeRepositoryMains = async ({ repositoryIds }) => {
|
|
125
|
+
if (!repositoryIds.length)
|
|
126
|
+
(0, utils_1.throwError)('repositoryIds is required');
|
|
127
|
+
const response = await repositoryModel.remove({
|
|
128
|
+
where: {
|
|
129
|
+
[`${models_1.ModelRepositoryFields.repository_id}`]: {
|
|
130
|
+
in: repositoryIds
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return response;
|
|
135
|
+
};
|
|
136
|
+
return {
|
|
137
|
+
createRepositoryMain,
|
|
138
|
+
updateRepositoryMain,
|
|
139
|
+
removeRepositoryMains
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
exports.RepositoryMainService = RepositoryMainService;
|
|
143
|
+
//# sourceMappingURL=RepositoryMainService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepositoryMainService.js","sourceRoot":"","sources":["../../../src/services/repository/RepositoryMainService.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n RepositoryModel,\n ModelRepositoryFields,\n} from \"@/models\";\n\nimport { dayjs, DefaultServiceProps, throwError } from \"@/utils\";\n\nimport { NumberDateSequenceService, NumberDateSequenceInitProps } from \"@/services\"\n\nimport { RepositoryType } from \"./RepositoryService\"\n\nexport const respositoryPrefix = {\n container: `CT`,\n pallet: `PL`,\n carton: \"CN\",\n package: \"PK\",\n package_item: \"PKI\"\n} as const\n\nexport type RepositoryMainServiceProps = DefaultServiceProps & {\n repositoryType: RepositoryType\n};\n\nexport type RepositoryMain = {\n repositoryType: RepositoryType,\n remark?: string,\n description?: string\n}\n\nexport type RepositoryMainCreateProps = {\n repositoryType?: RepositoryType,\n data: RepositoryMain & {\n repositoryNumber?: string,\n repositoryDate?: Date | null,\n // locationId: number,\n }\n}\n\nexport type RepositoryMainUpdateProps = {\n repositoryId: number,\n data: Omit<RepositoryMain, \"repositoryType\"> & {\n repositoryDate?: string,\n // locationId?: number,\n }\n}\n\nexport type RepositoryMainRemoveProps = {\n repositoryIds: BigInt[]\n};\n\n// const buildRepositoryDate = (requestRepositoryDate?: Date) => {\n// return requestRepositoryDate ? dayjs(requestRepositoryDate).format(\"YYYY-MM-DD\") : dayjs().format(\"YYYY-MM-DD\")\n// }\n\nexport const RepositoryMainService = (props: RepositoryMainServiceProps) => {\n\n const {\n repositoryType = \"container\",\n ...rest\n } = props\n\n const repositoryModel = RepositoryModel({ ...rest })\n\n const numberSequenceService = NumberDateSequenceService({ ...rest, field_ref: \"repository\", field_module: repositoryType as any })\n\n const getCreatePayload = async (repositoryType: RepositoryType, data: RepositoryMainCreateProps[\"data\"]) => {\n\n let repositoryDate = data?.repositoryDate\n let repositoryNumber = data?.repositoryNumber\n\n // if specify the custom repository number - check occurance\n if (repositoryNumber) {\n let findSameRepositoryNumber = await repositoryModel.count({\n where: {\n [`${ModelRepositoryFields.repository_number}`]: `${repositoryNumber}`,\n [`${ModelRepositoryFields.repository_type}`]: {\n equals: repositoryType,\n mode: \"insensitive\"\n }\n }\n })\n if (findSameRepositoryNumber > 0) {\n throw new Error(`Duplicate repository number(${repositoryType}) found: ${repositoryNumber}`);\n }\n }\n\n // for override\n if (!repositoryDate) {\n // repositoryDate = dayjs().format(\"YYYY-MM-DD\")\n repositoryDate = dayjs(repositoryDate, \"YYYY-MM-DD\").toDate();\n }\n\n // for override\n if (!repositoryNumber) {\n repositoryNumber = await buildRepositoryNumber(repositoryType, repositoryNumber, repositoryDate)\n }\n\n // final shape of the repository Date\n // repositoryDate = buildRepositoryDate(repositoryDate)\n\n return {\n [`${ModelRepositoryFields.repository_type}`]: repositoryType,\n [`${ModelRepositoryFields.repository_date}`]: repositoryDate,\n [`${ModelRepositoryFields.repository_number}`]: repositoryNumber,\n [`${ModelRepositoryFields.remark}`]: data?.remark ?? \"\",\n [`${ModelRepositoryFields.description}`]: data?.description ?? \"\",\n }\n\n }\n\n const getUpdatePayload = (data: RepositoryMainUpdateProps[\"data\"]) => {\n\n return {\n ...(data.repositoryDate ? { [`${ModelRepositoryFields.repository_date}`]: dayjs.utc(data.repositoryDate).toDate() } : {}),\n ...(data.remark ? { [`${ModelRepositoryFields.remark}`]: data.remark } : {}),\n ...(data.description ? { [`${ModelRepositoryFields.description}`]: data.description } : {}),\n }\n\n }\n\n const buildRepositoryNumber = async (repositoryType: RepositoryType, requestRepositoryNumber?: string, requestRepositoryDate?: Date) => {\n\n let repositoryNumberPrefix = `${respositoryPrefix[repositoryType]}`\n\n let fieldModule: NumberDateSequenceInitProps[\"field_module\"] = \"container\";\n let fieldRef: NumberDateSequenceInitProps[\"field_ref\"] = \"repository\";\n\n if (repositoryType === \"container\") { fieldModule = \"container\"; }\n if (repositoryType === \"pallet\") { fieldModule = \"pallet\"; }\n if (repositoryType === \"carton\") { fieldModule = \"carton\"; }\n if (repositoryType === \"package\") { fieldModule = \"package\"; }\n if (repositoryType === \"package_item\") { fieldModule = \"package_item\"; }\n\n if (!requestRepositoryNumber) { // mean using running no - required number sequences\n\n let sequenceDate = requestRepositoryDate ?\n dayjs(requestRepositoryDate).format(\"YYYY-MM-DD\")\n :\n dayjs().format(\"YYYY-MM-DD\")\n\n const payload = {\n field_ref: fieldRef,\n field_module: fieldModule,\n resetMethod: \"monthly\",\n formatOutputLength: 6,\n sequenceDate\n } satisfies NumberDateSequenceInitProps\n\n // create number sequence\n let responseNumberDateSequence = await numberSequenceService.initNumberDateSequence(payload)\n\n return `${repositoryNumberPrefix}-${responseNumberDateSequence.sequenceNumber.nextFormatted}`\n\n }\n\n // mean override the repository number with custom input\n return requestRepositoryNumber\n\n }\n\n const createRepositoryMain = async ({ data, repositoryType: overrideRepositoryType }: RepositoryMainCreateProps) => {\n\n const _repositoryType = overrideRepositoryType || repositoryType\n\n const _data = await getCreatePayload(_repositoryType, data)\n\n if (!_data) {\n throw new Error(`Invalid create repository(main) payload: ${JSON.stringify(_data)}`);\n }\n\n // create repository\n return await repositoryModel.create({ data: _data })\n\n }\n\n const updateRepositoryMain = async ({ repositoryId, data }: RepositoryMainUpdateProps) => {\n\n // const _repositoryType = overrideRepositoryType || repositoryType\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update repository(main) payload: ${JSON.stringify(_data)}`);\n }\n\n if (Object.keys(_data).length <= 0) {\n return true\n }\n\n // update repository\n return await repositoryModel.update({ id: repositoryId, data: _data })\n\n }\n\n const removeRepositoryMains = async ({ repositoryIds }: RepositoryMainRemoveProps) => {\n\n if (!repositoryIds.length) throwError('repositoryIds is required');\n\n const response = await repositoryModel.remove({\n where: {\n [`${ModelRepositoryFields.repository_id}`]: {\n in: repositoryIds\n }\n }\n });\n\n return response\n };\n\n return {\n createRepositoryMain,\n updateRepositoryMain,\n removeRepositoryMains\n }\n\n}\n\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { RepositoryMainCreateProps, RepositoryMainUpdateProps } from "./RepositoryMainService";
|
|
2
|
+
import { RepositoryContainerCreateProps, RepositoryContainerUpdateProps } from "./RepositoryContainerService";
|
|
3
|
+
import { QueryList, QueryGet } from "../../schema/common";
|
|
4
|
+
import { DefaultServiceProps } from "../../utils";
|
|
5
|
+
export declare const repositoryTypes: {
|
|
6
|
+
readonly container: "container";
|
|
7
|
+
readonly pallet: "pallet";
|
|
8
|
+
readonly carton: "carton";
|
|
9
|
+
readonly package: "package";
|
|
10
|
+
readonly package_item: "package_item";
|
|
11
|
+
};
|
|
12
|
+
export type RepositoryType = typeof repositoryTypes[keyof typeof repositoryTypes];
|
|
13
|
+
export type RepositoryServiceProps = DefaultServiceProps & {
|
|
14
|
+
repositoryType: RepositoryType;
|
|
15
|
+
};
|
|
16
|
+
export type RepositoryGetProps = QueryGet & {
|
|
17
|
+
id: number;
|
|
18
|
+
};
|
|
19
|
+
export type RepositoryListProps = QueryList & {};
|
|
20
|
+
export type RepositoryRemoveProps = {
|
|
21
|
+
repositoryIds: BigInt[];
|
|
22
|
+
};
|
|
23
|
+
export type RepositoryCreateProps = {
|
|
24
|
+
repositoryType?: RepositoryType;
|
|
25
|
+
data: Omit<RepositoryMainCreateProps["data"], "repositoryType"> & ({
|
|
26
|
+
container: Omit<RepositoryContainerCreateProps["data"]["container"], "repositoryId">;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
export type RepositoryUpdateProps = {
|
|
30
|
+
repositoryId: number;
|
|
31
|
+
repositoryType?: RepositoryType;
|
|
32
|
+
data: Omit<RepositoryMainUpdateProps["data"], "repositoryNumber"> & ({
|
|
33
|
+
container: Omit<RepositoryContainerUpdateProps["data"]["container"], "repositoryId">;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
export declare const RepositoryService: (props: RepositoryServiceProps) => {
|
|
37
|
+
createRepository: ({ data, repositoryType: overrideRepositoryType }: RepositoryCreateProps) => Promise<any>;
|
|
38
|
+
updateRepository: ({ repositoryId, data, repositoryType: overrideRepositoryType }: RepositoryUpdateProps) => Promise<any>;
|
|
39
|
+
getRepository: ({ id, datatypes }: RepositoryGetProps) => Promise<any>;
|
|
40
|
+
listRepositories: ({ limit, offset, filters, sortfield, sortorder, datatypes }: RepositoryListProps) => Promise<{
|
|
41
|
+
data: any[];
|
|
42
|
+
total: number;
|
|
43
|
+
}>;
|
|
44
|
+
removeRepositories: ({ repositoryIds }: RepositoryRemoveProps) => Promise<any>;
|
|
45
|
+
getRepositoryDataTypes: () => any[];
|
|
46
|
+
};
|