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.
Files changed (138) hide show
  1. package/dist/app.js +3 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/controllers/access_control/accessControlRoleController.d.ts +11 -0
  4. package/dist/controllers/access_control/accessControlRoleController.js +156 -0
  5. package/dist/controllers/access_control/accessControlRoleController.js.map +1 -0
  6. package/dist/controllers/access_control/accessControlUserController.d.ts +7 -0
  7. package/dist/controllers/access_control/accessControlUserController.js +140 -0
  8. package/dist/controllers/access_control/accessControlUserController.js.map +1 -0
  9. package/dist/controllers/index.d.ts +3 -0
  10. package/dist/controllers/index.js +16 -2
  11. package/dist/controllers/index.js.map +1 -1
  12. package/dist/controllers/repository/repositoryController.d.ts +12 -0
  13. package/dist/controllers/repository/repositoryController.js +249 -0
  14. package/dist/controllers/repository/repositoryController.js.map +1 -0
  15. package/dist/middlewares/route/index.d.ts +2 -0
  16. package/dist/middlewares/route/index.js +15 -2
  17. package/dist/middlewares/route/index.js.map +1 -1
  18. package/dist/middlewares/route/validateAccessControl.d.ts +7 -0
  19. package/dist/middlewares/route/validateAccessControl.js +28 -0
  20. package/dist/middlewares/route/validateAccessControl.js.map +1 -0
  21. package/dist/middlewares/route/validateRepository.d.ts +4 -0
  22. package/dist/middlewares/route/validateRepository.js +14 -24
  23. package/dist/middlewares/route/validateRepository.js.map +1 -1
  24. package/dist/models/access_control/AccessControlRoleModel.d.ts +228 -0
  25. package/dist/models/access_control/AccessControlRoleModel.js +13 -0
  26. package/dist/models/access_control/AccessControlRoleModel.js.map +1 -0
  27. package/dist/models/access_control/AccessControlRolePolicyModel.d.ts +206 -0
  28. package/dist/models/access_control/AccessControlRolePolicyModel.js +13 -0
  29. package/dist/models/access_control/AccessControlRolePolicyModel.js.map +1 -0
  30. package/dist/models/access_control/AccessControlUserRoleModel.d.ts +206 -0
  31. package/dist/models/access_control/AccessControlUserRoleModel.js +13 -0
  32. package/dist/models/access_control/AccessControlUserRoleModel.js.map +1 -0
  33. package/dist/models/index.d.ts +18 -0
  34. package/dist/models/index.js +30 -2
  35. package/dist/models/index.js.map +1 -1
  36. package/dist/models/repository/RepositoryCartonModel.d.ts +312 -0
  37. package/dist/models/repository/RepositoryCartonModel.js +13 -0
  38. package/dist/models/repository/RepositoryCartonModel.js.map +1 -0
  39. package/dist/models/repository/RepositoryContainerModel.d.ts +268 -0
  40. package/dist/models/repository/RepositoryContainerModel.js +13 -0
  41. package/dist/models/repository/RepositoryContainerModel.js.map +1 -0
  42. package/dist/models/repository/RepositoryModel.d.ts +235 -0
  43. package/dist/models/repository/RepositoryModel.js +13 -0
  44. package/dist/models/repository/RepositoryModel.js.map +1 -0
  45. package/dist/models/repository/RepositoryPackageItemModel.d.ts +334 -0
  46. package/dist/models/repository/RepositoryPackageItemModel.js +13 -0
  47. package/dist/models/repository/RepositoryPackageItemModel.js.map +1 -0
  48. package/dist/models/repository/RepositoryPackageModel.d.ts +323 -0
  49. package/dist/models/repository/RepositoryPackageModel.js +13 -0
  50. package/dist/models/repository/RepositoryPackageModel.js.map +1 -0
  51. package/dist/models/repository/RepositoryPalletModel.d.ts +301 -0
  52. package/dist/models/repository/RepositoryPalletModel.js +13 -0
  53. package/dist/models/repository/RepositoryPalletModel.js.map +1 -0
  54. package/dist/routes/access_control/accessControlPoliciesRoutes.d.ts +2 -0
  55. package/dist/routes/access_control/accessControlPoliciesRoutes.js +11 -0
  56. package/dist/routes/access_control/accessControlPoliciesRoutes.js.map +1 -0
  57. package/dist/routes/access_control/accessControlRoleRoutes.d.ts +2 -0
  58. package/dist/routes/access_control/accessControlRoleRoutes.js +15 -0
  59. package/dist/routes/access_control/accessControlRoleRoutes.js.map +1 -0
  60. package/dist/routes/access_control/accessControlRolesRoutes.d.ts +2 -0
  61. package/dist/routes/access_control/accessControlRolesRoutes.js +13 -0
  62. package/dist/routes/access_control/accessControlRolesRoutes.js.map +1 -0
  63. package/dist/routes/access_control/accessControlRoutes.d.ts +0 -1
  64. package/dist/routes/access_control/accessControlRoutes.js +8 -5
  65. package/dist/routes/access_control/accessControlRoutes.js.map +1 -1
  66. package/dist/routes/access_control/accessControlUsersRoutes.d.ts +3 -0
  67. package/dist/routes/access_control/accessControlUsersRoutes.js +13 -0
  68. package/dist/routes/access_control/accessControlUsersRoutes.js.map +1 -0
  69. package/dist/routes/index.d.ts +2 -0
  70. package/dist/routes/index.js +5 -1
  71. package/dist/routes/index.js.map +1 -1
  72. package/dist/routes/repository/repositoriesRoutes.d.ts +2 -0
  73. package/dist/routes/repository/repositoriesRoutes.js +13 -0
  74. package/dist/routes/repository/repositoriesRoutes.js.map +1 -0
  75. package/dist/routes/repository/repositoryRoutes.d.ts +2 -0
  76. package/dist/routes/repository/repositoryRoutes.js +15 -0
  77. package/dist/routes/repository/repositoryRoutes.js.map +1 -0
  78. package/dist/schema/middleware/route/index.d.ts +2 -2
  79. package/dist/schema/middleware/route/index.js +2 -1
  80. package/dist/schema/middleware/route/index.js.map +1 -1
  81. package/dist/schema/middleware/route/schemaAccessControl.d.ts +3 -0
  82. package/dist/schema/middleware/route/schemaAccessControl.js +6 -1
  83. package/dist/schema/middleware/route/schemaAccessControl.js.map +1 -1
  84. package/dist/schema/middleware/route/schemaRepository.d.ts +2 -2
  85. package/dist/schema/payload/access_control/schemaAccessControlRole.d.ts +219 -0
  86. package/dist/schema/payload/access_control/schemaAccessControlRole.js +41 -0
  87. package/dist/schema/payload/access_control/schemaAccessControlRole.js.map +1 -0
  88. package/dist/schema/payload/access_control/schemaAccessControlUser.d.ts +54 -0
  89. package/dist/schema/payload/access_control/schemaAccessControlUser.js +34 -0
  90. package/dist/schema/payload/access_control/schemaAccessControlUser.js.map +1 -0
  91. package/dist/schema/payload/business/schemaBusiness.d.ts +16 -1
  92. package/dist/schema/payload/business/schemaBusiness.js +8 -12
  93. package/dist/schema/payload/business/schemaBusiness.js.map +1 -1
  94. package/dist/schema/payload/index.d.ts +8 -0
  95. package/dist/schema/payload/index.js +18 -2
  96. package/dist/schema/payload/index.js.map +1 -1
  97. package/dist/schema/payload/injection_field/schemaInjectionField.d.ts +20 -134
  98. package/dist/schema/payload/injection_field/schemaInjectionField.js +8 -8
  99. package/dist/schema/payload/injection_field/schemaInjectionField.js.map +1 -1
  100. package/dist/schema/payload/repository/schemaRepository.d.ts +66 -0
  101. package/dist/schema/payload/repository/schemaRepository.js +26 -0
  102. package/dist/schema/payload/repository/schemaRepository.js.map +1 -0
  103. package/dist/schema/payload/repository/schemaRepositoryContainer.d.ts +292 -0
  104. package/dist/schema/payload/repository/schemaRepositoryContainer.js +41 -0
  105. package/dist/schema/payload/repository/schemaRepositoryContainer.js.map +1 -0
  106. package/dist/services/access_control/AccessControlRoleService.d.ts +49 -0
  107. package/dist/services/access_control/AccessControlRoleService.js +249 -0
  108. package/dist/services/access_control/AccessControlRoleService.js.map +1 -0
  109. package/dist/services/access_control/AccessControlUserService.d.ts +27 -0
  110. package/dist/services/access_control/AccessControlUserService.js +260 -0
  111. package/dist/services/access_control/AccessControlUserService.js.map +1 -0
  112. package/dist/services/index.d.ts +6 -0
  113. package/dist/services/index.js +8 -5
  114. package/dist/services/index.js.map +1 -1
  115. package/dist/services/injection_field/InjectionFieldService.d.ts +4 -2
  116. package/dist/services/injection_field/RepositoryInjectionFieldService.d.ts +14 -5
  117. package/dist/services/injection_field/RepositoryInjectionFieldService.js +6 -2
  118. package/dist/services/injection_field/RepositoryInjectionFieldService.js.map +1 -1
  119. package/dist/services/repository/RepositoryContainerService.d.ts +64 -0
  120. package/dist/services/repository/RepositoryContainerService.js +187 -0
  121. package/dist/services/repository/RepositoryContainerService.js.map +1 -0
  122. package/dist/services/repository/RepositoryMainService.d.ts +80 -0
  123. package/dist/services/repository/RepositoryMainService.js +143 -0
  124. package/dist/services/repository/RepositoryMainService.js.map +1 -0
  125. package/dist/services/repository/RepositoryService.d.ts +46 -0
  126. package/dist/services/repository/RepositoryService.js +133 -0
  127. package/dist/services/repository/RepositoryService.js.map +1 -0
  128. package/dist/utils/accessControlUtils.d.ts +17 -0
  129. package/dist/utils/accessControlUtils.js +8 -0
  130. package/dist/utils/accessControlUtils.js.map +1 -0
  131. package/dist/utils/index.d.ts +2 -1
  132. package/dist/utils/index.js +4 -1
  133. package/dist/utils/index.js.map +1 -1
  134. package/dist/utils/zodUtils.d.ts +13 -0
  135. package/dist/utils/zodUtils.js +17 -1
  136. package/dist/utils/zodUtils.js.map +1 -1
  137. package/package.json +1 -1
  138. package/prisma/schema.prisma +188 -0
@@ -1 +1 @@
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 package: {\n repository: { repositoryId: any };\n repository_item: { repositoryId: any; };\n };\n container: {\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 package: \"pk\",\n container: \"cont\",\n};\n\nexport const repositoryRefPrefixMap: Record<\"repository\" | \"repository_item\", 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"]}
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
+ };