storemw-core-api 1.0.96 → 1.0.97

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.
@@ -17,7 +17,7 @@ export type AuthorizeRequest = Request & {
17
17
  /**
18
18
  * Combined middleware: JWT or Access Key
19
19
  */
20
- export declare const validateAuthorization: (options?: ValidateAuthOptions) => (req: Request, res: Response, next: NextFunction) => Promise<void | Response<any, Record<string, any>>>;
20
+ export declare const validateAuthorization: (options?: ValidateAuthOptions) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
21
21
  /**
22
22
  * Validate Access Key
23
23
  */
@@ -45,22 +45,29 @@ const validateAuthorization = (options = {
45
45
  // console.log('reqTyped', reqTyped)
46
46
  if (valid)
47
47
  return next();
48
+ (0, utils_1.throwError)(`Invalid access key`);
49
+ // return sendError(res, "UNAUTHORIZED", "Invalid access key", "", "", HTTP_STATUS.UNAUTHORIZED);
48
50
  }
49
51
  // Fallback: JWT
50
52
  if (!authHeader) {
51
- return (0, utils_1.sendError)(res, "UNAUTHORIZED", "Missing authorization token or access key", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
53
+ (0, utils_1.throwError)(`Missing authorization token or access key`);
54
+ // return sendError(res, "UNAUTHORIZED", "", "", "Missing authorization token or access key", HTTP_STATUS.UNAUTHORIZED);
52
55
  }
53
56
  const token = authHeader.split(" ")[1];
54
57
  if (!token) {
55
- return (0, utils_1.sendError)(res, "UNAUTHORIZED", "Invalid authorization token format", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
58
+ (0, utils_1.throwError)(`Invalid authorization token format`);
59
+ // return sendError(res, "UNAUTHORIZED", "Invalid authorization token format", "", "", HTTP_STATUS.UNAUTHORIZED);
56
60
  }
57
61
  const valid = validateJWT(token, reqTyped, res, next);
58
62
  if (valid)
59
63
  return next();
60
64
  }
61
65
  catch (err) {
62
- console.error("Authorization error:", err);
63
- return (0, utils_1.sendError)(res, "UNAUTHORIZED", "Unauthorized", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
66
+ // console.error("Authorization error:", err);
67
+ // throwError(`Unauthorized: ${err}`)
68
+ // sendError(res, "UNAUTHORIZED", "Unauthorized", "", "", HTTP_STATUS.UNAUTHORIZED);
69
+ (0, utils_1.sendError)(res, "UNAUTHORIZED", `${err?.message ?? err}`, "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
70
+ return;
64
71
  }
65
72
  };
66
73
  };
@@ -86,7 +93,7 @@ const validateAccessKeyMiddleware = async (accessKey, req, res) => {
86
93
  accountId: Number(accessKeyData.accountid),
87
94
  actionUserId: Number(accessKeyData.user_id),
88
95
  authToken: "",
89
- isOperator: false,
96
+ isOperator: Boolean(accessKeyData.user_type === "operator"),
90
97
  accessKeyId: `${accessKeyData?.key_id}`,
91
98
  accessKey: `${accessKey}`
92
99
  // isAccessKey: true,
@@ -95,7 +102,7 @@ const validateAccessKeyMiddleware = async (accessKey, req, res) => {
95
102
  return true;
96
103
  }
97
104
  catch (err) {
98
- (0, utils_1.sendError)(res, "UNAUTHORIZED", err.message || "Invalid access key", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
105
+ // sendError(res, "UNAUTHORIZED", err.message || "Invalid access key", "", "", HTTP_STATUS.UNAUTHORIZED);
99
106
  return false;
100
107
  }
101
108
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validateAuthorization.js","sourceRoot":"","sources":["../../../src/middlewares/request/validateAuthorization.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\n// import jwt, { JwtPayload } from \"jsonwebtoken\";\n\nimport { match } from \"path-to-regexp\";\n// Library-safe import (CJS + ESM compatible)\n// const pathToRegexp = require(\"path-to-regexp\");\n\n// import { storeJwtInMemory } from \"@/utils\";\n\n// import { config } from \"@/configs/config\";\nimport { sendError, HTTP_STATUS, getCoreConfiguration } from \"@/utils\";\nimport { verifyAuthToken } from \"@/utils\"\nimport { AccessKeyUtilService } from \"@/services\";\n\n// retrive core configuration\nconst coreConfig = getCoreConfiguration()\n\n// import { AuthJwtToken } from \"@/services\";\n\nconst defaultExcludedRoutes = [\n '/auth/token',\n // '/api/tools/generatesignature',\n // '/api/tools/generatetoken',\n // add more defaults if needed\n];\n\n// const excludedRoutes = [\n// '/auth/token'\n// ]; // List of excluded routes\n\ntype ValidateAuthOptions = {\n excludedRoutes: string[];\n}\n\n// interface AuthJwtPayload extends JwtPayload {\n// user?: { id: number, user_id: number, user_type: AuthType };\n// account?: { id: number, account_id: number };\n// }\n\nexport type AuthorizeRequest = Request & {\n accountId: number\n actionUserId: number,\n auth: {\n accountId: number,\n actionUserId: number,\n authToken: string,\n isOperator: boolean\n accessKey?: string\n accessKeyId?: string\n }\n}\n\n/**\n * Combined middleware: JWT or Access Key\n */\nexport const validateAuthorization = (options: ValidateAuthOptions = {\n excludedRoutes: []\n}) => {\n const excludedRoutes = [...defaultExcludedRoutes, ...(options.excludedRoutes || [])];\n\n const matchers = excludedRoutes.map((route) => match(route, { decode: decodeURIComponent }));\n\n // const matchers = excludedRoutes.map((route) => {\n // const regex = pathToRegexp(route); // works for all versions\n // return (path: string) => regex.test(path); // returns boolean\n // });\n\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n const isExcluded = matchers.some((m) => m(req.path));\n if (isExcluded) return next();\n\n const authHeader = req.headers.authorization;\n const accessKeyHeader = req.headers[\"x-access-key\"] as string;\n\n const reqTyped = req as AuthorizeRequest;\n\n // Try Access Key first\n if (accessKeyHeader) {\n const valid = await validateAccessKeyMiddleware(accessKeyHeader, reqTyped, res);\n // console.log('reqTyped', reqTyped)\n if (valid) return next();\n }\n\n // Fallback: JWT\n if (!authHeader) {\n return sendError(res, \"UNAUTHORIZED\", \"Missing authorization token or access key\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n const token = authHeader.split(\" \")[1];\n\n if (!token) {\n return sendError(res, \"UNAUTHORIZED\", \"Invalid authorization token format\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n const valid = validateJWT(token, reqTyped, res, next);\n\n if (valid) return next();\n\n } catch (err) {\n console.error(\"Authorization error:\", err);\n return sendError(res, \"UNAUTHORIZED\", \"Unauthorized\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n };\n};\n\n/**\n * Validate Access Key\n */\nexport const validateAccessKeyMiddleware = async (accessKey: string, req: AuthorizeRequest, res: Response) => {\n try {\n\n const accessKeyUtilService = AccessKeyUtilService({\n accessKeyUserType: \"administrator\",\n accountId: 0,\n actionUserId: 0,\n authToken: \"\",\n isOperator: true,\n prisma: (req as any).prisma\n })\n\n const accessKeyData = await accessKeyUtilService.validateAccessKey({ data: { accessKey } });\n\n // console.log('ac', accessKeyData)\n\n req.accountId = Number(accessKeyData.accountid);\n req.actionUserId = Number(accessKeyData.user_id);\n req.auth = {\n accountId: Number(accessKeyData.accountid),\n actionUserId: Number(accessKeyData.user_id),\n authToken: \"\",\n isOperator: false,\n accessKeyId: `${accessKeyData?.key_id}`,\n accessKey: `${accessKey}`\n // isAccessKey: true,\n // accessKeyId: accessKeyData.access_key_id,\n };\n\n return true;\n } catch (err: any) {\n sendError(res, \"UNAUTHORIZED\", err.message || \"Invalid access key\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n return false;\n }\n};\n\n/**\n * Validate JWT token\n */\nconst validateJWT = (token: string, req: AuthorizeRequest, res: Response, next: NextFunction) => {\n\n try {\n\n if (!token) {\n sendError(\n res,\n \"UNAUTHORIZED\",\n \"Invalid authorization token\",\n \"\",\n \"\",\n HTTP_STATUS.UNAUTHORIZED\n );\n\n return\n }\n\n // const authSecretKey = config.AUTH_SECRET_KEY\n const authSecretKey = coreConfig.authSecretKey\n\n // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token\n const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token\n\n // for old format\n let accountId = jwtData?.account?.id ?? 0\n let actionUserId = jwtData?.user?.id ?? 0\n let userType = jwtData?.user?.user_type ?? \"\"\n\n // for new format \n if (jwtData?.account?.account_id) accountId = jwtData?.account?.account_id\n if (jwtData?.user?.user_id) actionUserId = jwtData?.user?.user_id\n\n // only check if not operator token\n if (userType === \"operator\") {\n accountId = 0; // always 0 for operator login\n } else {\n if (accountId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing accountId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n if (actionUserId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing actionUserId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n\n (req as AuthorizeRequest).accountId = Number(accountId);\n (req as AuthorizeRequest).actionUserId = Number(actionUserId);\n\n (req as AuthorizeRequest).auth = {\n accountId: Number(accountId),\n actionUserId: Number(actionUserId),\n authToken: token,\n isOperator: Boolean(userType === \"operator\")\n }\n // storeJwtInMemory(jwtData)\n // req.jwtUser = jwtData; // Attach decoded payload to request\n\n // next(); // Proceed to the next middleware\n\n return true;\n\n } catch (error) {\n\n sendError(\n res,\n \"UNAUTHORIZED\",\n \"Invalid or expired token\",\n \"\",\n \"\",\n HTTP_STATUS.UNAUTHORIZED\n );\n\n // return\n return false;\n }\n}\n\n// original\n// export const validateAuthorization = (options: ValidateAuthOptions) => {\n\n// // Merge default excluded routes with any custom ones\n// const excludedRoutes = [\n// ...defaultExcludedRoutes,\n// ...(options.excludedRoutes || [])\n// ];\n\n// // precompile matchers for performance\n// const matchers = excludedRoutes.map((route) => match(route, { decode: decodeURIComponent }));\n\n// return (req: Request, res: Response, next: NextFunction): void => {\n\n// // if (excludedRoutes.includes(req.path)) {\n// // return next(); // Skip middleware for excluded routes\n// // }\n\n// const isExcluded = matchers.some((m) => m(req.path));\n\n// if (isExcluded) return next(); // Skip middleware for excluded routes\n\n// const authSecretKey = config.AUTH_SECRET_KEY\n\n// const authHeader = req.headers.authorization;\n\n// // console.log('in core - authSecretKey', authSecretKey)\n// // console.log('in core - authHeader', authHeader)\n\n// // Extract token from \"Bearer <token>\"\n// const token = authHeader && authHeader.split(\" \")[1];\n\n// try {\n\n// if (!token) {\n// sendError(\n// res,\n// \"UNAUTHORIZED\",\n// \"Invalid authorization token\",\n// \"\",\n// \"\",\n// HTTP_STATUS.UNAUTHORIZED\n// );\n\n// return\n// }\n\n// // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token\n// const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token\n\n// // for old format\n// let accountId = jwtData?.account?.id ?? 0\n// let actionUserId = jwtData?.user?.id ?? 0\n// let userType = jwtData?.user?.user_type ?? \"\"\n\n// // for new format \n// if (jwtData?.account?.account_id) accountId = jwtData?.account?.account_id\n// if (jwtData?.user?.user_id) actionUserId = jwtData?.user?.user_id\n\n// // only check if not operator token\n// if (userType === \"operator\") {\n// accountId = 0; // always 0 for operator login\n// } else {\n// if (accountId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing accountId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n// }\n\n// if (actionUserId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing actionUserId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n\n// (req as AuthorizeRequest).accountId = Number(accountId);\n// (req as AuthorizeRequest).actionUserId = Number(actionUserId);\n\n// (req as AuthorizeRequest).auth = {\n// accountId: Number(accountId),\n// actionUserId: Number(actionUserId),\n// authToken: token,\n// isOperator: Boolean(userType === \"operator\")\n// }\n// // storeJwtInMemory(jwtData)\n// // req.jwtUser = jwtData; // Attach decoded payload to request\n\n// next(); // Proceed to the next middleware\n\n// } catch (error) {\n\n// sendError(\n// res,\n// \"UNAUTHORIZED\",\n// \"Invalid or expired token\",\n// \"\",\n// \"\",\n// HTTP_STATUS.UNAUTHORIZED\n// );\n\n// return\n// }\n\n// }\n\n// };"]}
1
+ {"version":3,"file":"validateAuthorization.js","sourceRoot":"","sources":["../../../src/middlewares/request/validateAuthorization.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\n// import jwt, { JwtPayload } from \"jsonwebtoken\";\n\nimport { match } from \"path-to-regexp\";\n// Library-safe import (CJS + ESM compatible)\n// const pathToRegexp = require(\"path-to-regexp\");\n\n// import { storeJwtInMemory } from \"@/utils\";\n\n// import { config } from \"@/configs/config\";\nimport { sendError, HTTP_STATUS, getCoreConfiguration, throwError } from \"@/utils\";\nimport { verifyAuthToken } from \"@/utils\"\nimport { AccessKeyUtilService } from \"@/services\";\n\n// retrive core configuration\nconst coreConfig = getCoreConfiguration()\n\n// import { AuthJwtToken } from \"@/services\";\n\nconst defaultExcludedRoutes = [\n '/auth/token',\n // '/api/tools/generatesignature',\n // '/api/tools/generatetoken',\n // add more defaults if needed\n];\n\n// const excludedRoutes = [\n// '/auth/token'\n// ]; // List of excluded routes\n\ntype ValidateAuthOptions = {\n excludedRoutes: string[];\n}\n\n// interface AuthJwtPayload extends JwtPayload {\n// user?: { id: number, user_id: number, user_type: AuthType };\n// account?: { id: number, account_id: number };\n// }\n\nexport type AuthorizeRequest = Request & {\n accountId: number\n actionUserId: number,\n auth: {\n accountId: number,\n actionUserId: number,\n authToken: string,\n isOperator: boolean\n accessKey?: string\n accessKeyId?: string\n }\n}\n\n/**\n * Combined middleware: JWT or Access Key\n */\nexport const validateAuthorization = (options: ValidateAuthOptions = {\n excludedRoutes: []\n}) => {\n const excludedRoutes = [...defaultExcludedRoutes, ...(options.excludedRoutes || [])];\n\n const matchers = excludedRoutes.map((route) => match(route, { decode: decodeURIComponent }));\n\n // const matchers = excludedRoutes.map((route) => {\n // const regex = pathToRegexp(route); // works for all versions\n // return (path: string) => regex.test(path); // returns boolean\n // });\n\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n const isExcluded = matchers.some((m) => m(req.path));\n if (isExcluded) return next();\n\n const authHeader = req.headers.authorization;\n const accessKeyHeader = req.headers[\"x-access-key\"] as string;\n\n const reqTyped = req as AuthorizeRequest;\n\n // Try Access Key first\n if (accessKeyHeader) {\n const valid = await validateAccessKeyMiddleware(accessKeyHeader, reqTyped, res);\n // console.log('reqTyped', reqTyped)\n if (valid) return next();\n\n throwError(`Invalid access key`)\n // return sendError(res, \"UNAUTHORIZED\", \"Invalid access key\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n // Fallback: JWT\n if (!authHeader) {\n throwError(`Missing authorization token or access key`)\n // return sendError(res, \"UNAUTHORIZED\", \"\", \"\", \"Missing authorization token or access key\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n const token = authHeader.split(\" \")[1];\n\n if (!token) {\n throwError(`Invalid authorization token format`)\n // return sendError(res, \"UNAUTHORIZED\", \"Invalid authorization token format\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n const valid = validateJWT(token, reqTyped, res, next);\n\n if (valid) return next();\n\n } catch (err: any) {\n // console.error(\"Authorization error:\", err);\n // throwError(`Unauthorized: ${err}`)\n // sendError(res, \"UNAUTHORIZED\", \"Unauthorized\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n\n sendError(\n res,\n \"UNAUTHORIZED\",\n `${err?.message ?? err}`,\n \"\",\n \"\",\n HTTP_STATUS.UNAUTHORIZED\n );\n\n return\n }\n };\n};\n\n/**\n * Validate Access Key\n */\nexport const validateAccessKeyMiddleware = async (accessKey: string, req: AuthorizeRequest, res: Response) => {\n try {\n\n const accessKeyUtilService = AccessKeyUtilService({\n accessKeyUserType: \"administrator\",\n accountId: 0,\n actionUserId: 0,\n authToken: \"\",\n isOperator: true,\n prisma: (req as any).prisma\n })\n\n const accessKeyData = await accessKeyUtilService.validateAccessKey({ data: { accessKey } });\n\n // console.log('ac', accessKeyData)\n\n req.accountId = Number(accessKeyData.accountid);\n req.actionUserId = Number(accessKeyData.user_id);\n req.auth = {\n accountId: Number(accessKeyData.accountid),\n actionUserId: Number(accessKeyData.user_id),\n authToken: \"\",\n isOperator: Boolean(accessKeyData.user_type === \"operator\"),\n accessKeyId: `${accessKeyData?.key_id}`,\n accessKey: `${accessKey}`\n // isAccessKey: true,\n // accessKeyId: accessKeyData.access_key_id,\n };\n\n return true;\n } catch (err: any) {\n // sendError(res, \"UNAUTHORIZED\", err.message || \"Invalid access key\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n return false;\n }\n};\n\n/**\n * Validate JWT token\n */\nconst validateJWT = (token: string, req: AuthorizeRequest, res: Response, next: NextFunction) => {\n\n try {\n\n if (!token) {\n sendError(\n res,\n \"UNAUTHORIZED\",\n \"Invalid authorization token\",\n \"\",\n \"\",\n HTTP_STATUS.UNAUTHORIZED\n );\n\n return\n }\n\n // const authSecretKey = config.AUTH_SECRET_KEY\n const authSecretKey = coreConfig.authSecretKey\n\n // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token\n const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token\n\n // for old format\n let accountId = jwtData?.account?.id ?? 0\n let actionUserId = jwtData?.user?.id ?? 0\n let userType = jwtData?.user?.user_type ?? \"\"\n\n // for new format \n if (jwtData?.account?.account_id) accountId = jwtData?.account?.account_id\n if (jwtData?.user?.user_id) actionUserId = jwtData?.user?.user_id\n\n // only check if not operator token\n if (userType === \"operator\") {\n accountId = 0; // always 0 for operator login\n } else {\n if (accountId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing accountId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n }\n\n if (actionUserId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing actionUserId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n\n (req as AuthorizeRequest).accountId = Number(accountId);\n (req as AuthorizeRequest).actionUserId = Number(actionUserId);\n\n (req as AuthorizeRequest).auth = {\n accountId: Number(accountId),\n actionUserId: Number(actionUserId),\n authToken: token,\n isOperator: Boolean(userType === \"operator\")\n }\n // storeJwtInMemory(jwtData)\n // req.jwtUser = jwtData; // Attach decoded payload to request\n\n // next(); // Proceed to the next middleware\n\n return true;\n\n } catch (error) {\n\n sendError(\n res,\n \"UNAUTHORIZED\",\n \"Invalid or expired token\",\n \"\",\n \"\",\n HTTP_STATUS.UNAUTHORIZED\n );\n\n // return\n return false;\n }\n}\n\n// original\n// export const validateAuthorization = (options: ValidateAuthOptions) => {\n\n// // Merge default excluded routes with any custom ones\n// const excludedRoutes = [\n// ...defaultExcludedRoutes,\n// ...(options.excludedRoutes || [])\n// ];\n\n// // precompile matchers for performance\n// const matchers = excludedRoutes.map((route) => match(route, { decode: decodeURIComponent }));\n\n// return (req: Request, res: Response, next: NextFunction): void => {\n\n// // if (excludedRoutes.includes(req.path)) {\n// // return next(); // Skip middleware for excluded routes\n// // }\n\n// const isExcluded = matchers.some((m) => m(req.path));\n\n// if (isExcluded) return next(); // Skip middleware for excluded routes\n\n// const authSecretKey = config.AUTH_SECRET_KEY\n\n// const authHeader = req.headers.authorization;\n\n// // console.log('in core - authSecretKey', authSecretKey)\n// // console.log('in core - authHeader', authHeader)\n\n// // Extract token from \"Bearer <token>\"\n// const token = authHeader && authHeader.split(\" \")[1];\n\n// try {\n\n// if (!token) {\n// sendError(\n// res,\n// \"UNAUTHORIZED\",\n// \"Invalid authorization token\",\n// \"\",\n// \"\",\n// HTTP_STATUS.UNAUTHORIZED\n// );\n\n// return\n// }\n\n// // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token\n// const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token\n\n// // for old format\n// let accountId = jwtData?.account?.id ?? 0\n// let actionUserId = jwtData?.user?.id ?? 0\n// let userType = jwtData?.user?.user_type ?? \"\"\n\n// // for new format \n// if (jwtData?.account?.account_id) accountId = jwtData?.account?.account_id\n// if (jwtData?.user?.user_id) actionUserId = jwtData?.user?.user_id\n\n// // only check if not operator token\n// if (userType === \"operator\") {\n// accountId = 0; // always 0 for operator login\n// } else {\n// if (accountId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing accountId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n// }\n\n// if (actionUserId === 0) throw sendError(res, \"UNAUTHORIZED\", \"Missing actionUserId in authorization\", \"\", \"\", HTTP_STATUS.UNAUTHORIZED);\n\n// (req as AuthorizeRequest).accountId = Number(accountId);\n// (req as AuthorizeRequest).actionUserId = Number(actionUserId);\n\n// (req as AuthorizeRequest).auth = {\n// accountId: Number(accountId),\n// actionUserId: Number(actionUserId),\n// authToken: token,\n// isOperator: Boolean(userType === \"operator\")\n// }\n// // storeJwtInMemory(jwtData)\n// // req.jwtUser = jwtData; // Attach decoded payload to request\n\n// next(); // Proceed to the next middleware\n\n// } catch (error) {\n\n// sendError(\n// res,\n// \"UNAUTHORIZED\",\n// \"Invalid or expired token\",\n// \"\",\n// \"\",\n// HTTP_STATUS.UNAUTHORIZED\n// );\n\n// return\n// }\n\n// }\n\n// };"]}
@@ -1,5 +1,4 @@
1
1
  export { UserModel, ModelUserFields } from "./user/UserModel";
2
- export { UserStatusModel, ModelUserStatusFields } from "./user/UserStatusModel";
3
2
  export { UserPropModel, ModelUserPropFields } from "./user/UserPropModel";
4
3
  export { CustomerModel, ModelCustomerFields } from "./user/CustomerModel";
5
4
  export { RetailerModel, ModelRetailerFields } from "./user/RetailerModel";
@@ -9,7 +8,6 @@ export { WorkerModel, ModelWorkerFields } from "./user/WorkerModel";
9
8
  export { DriverModel, ModelDriverFields } from "./user/DriverModel";
10
9
  export { MemberModel, ModelMemberFields } from "./user/MemberModel";
11
10
  export type { ModelUser, ModelUserCreateProps, ModelUserGetProps, ModelUserListProps } from "./user/UserModel";
12
- export type { ModelUserStatus, ModelUserStatusCreateProps, ModelUserStatusGetProps, ModelUserStatusListProps } from "./user/UserStatusModel";
13
11
  export type { ModelUserProp, ModelUserPropCreateProps, ModelUserPropGetProps, ModelUserPropListProps } from "./user/UserPropModel";
14
12
  export type { ModelCustomer, ModelCustomerCreateProps, ModelCustomerGetProps, ModelCustomerListProps } from "./user/CustomerModel";
15
13
  export type { ModelRetailer, ModelRetailerCreateProps, ModelRetailerGetProps, ModelRetailerListProps } from "./user/RetailerModel";
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModelRepositoryInjectionFieldFields = exports.RepositoryInjectionFieldModel = exports.ModelDocumentInjectionFieldFields = exports.DocumentInjectionFieldModel = exports.ModelUserInjectionFieldFields = exports.UserInjectionFieldModel = exports.ModelInjectionFieldFields = exports.InjectionFieldModel = exports.ModelLocationSlotFields = exports.LocationSlotModel = exports.ModelLocationRackFields = exports.LocationRackModel = exports.ModelLocationFields = exports.LocationModel = exports.ModelFileFields = exports.FileModel = exports.ModelGroupOwnerFields = exports.GroupOwnerModel = exports.ModelGroupFields = exports.GroupModel = exports.ModelBranchUserFields = exports.BranchUserModel = exports.ModelUserBranchFields = exports.UserBranchModel = exports.ModelAccountFields = exports.AccountModel = exports.ModelBusinessFields = exports.BusinessModel = exports.ModelAccessKeyFields = exports.AccessKeyModel = exports.ModelMemberFields = exports.MemberModel = exports.ModelDriverFields = exports.DriverModel = exports.ModelWorkerFields = exports.WorkerModel = exports.ModelOperatorFields = exports.OperatorModel = exports.ModelAdministratorFields = exports.AdministratorModel = exports.ModelRetailerFields = exports.RetailerModel = exports.ModelCustomerFields = exports.CustomerModel = exports.ModelUserPropFields = exports.UserPropModel = exports.ModelUserStatusFields = exports.UserStatusModel = exports.ModelUserFields = exports.UserModel = void 0;
4
- exports.ModelOneTimeCodeFields = exports.OneTimeCodeModel = exports.ModelNumberDateSequenceFields = exports.NumberDateSequenceModel = exports.ModelDocumentDocumentFields = exports.DocumentDocumentModel = exports.ModelDocumentItemFields = exports.DocumentItemModel = exports.ModelDocumentPaymentFields = exports.DocumentPaymentModel = exports.ModelDocumentLocationFields = exports.DocumentLocationModel = exports.ModelDocumentAmountFields = exports.DocumentAmountModel = exports.ModelDocumentProfileFields = exports.DocumentProfileModel = exports.ModelDocumentTotalFields = exports.DocumentTotalModel = exports.ModelDocumentFields = exports.DocumentModel = exports.ModelCategoryFields = exports.CategoryModel = exports.ModelUomFields = exports.UomModel = exports.ModelBrandFields = exports.BrandModel = exports.ModelItemFields = exports.ItemModel = exports.ModelProductFields = exports.ProductModel = exports.ModelAreaFields = exports.AreaModel = exports.ModelStateFields = exports.StateModel = exports.ModelCountryFields = exports.CountryModel = exports.ModelItemInjectionFieldFields = exports.ItemInjectionFieldModel = exports.ModelLogisticInjectionFieldFields = exports.LogisticInjectionFieldModel = void 0;
3
+ exports.ModelLogisticInjectionFieldFields = exports.LogisticInjectionFieldModel = exports.ModelRepositoryInjectionFieldFields = exports.RepositoryInjectionFieldModel = exports.ModelDocumentInjectionFieldFields = exports.DocumentInjectionFieldModel = exports.ModelUserInjectionFieldFields = exports.UserInjectionFieldModel = exports.ModelInjectionFieldFields = exports.InjectionFieldModel = exports.ModelLocationSlotFields = exports.LocationSlotModel = exports.ModelLocationRackFields = exports.LocationRackModel = exports.ModelLocationFields = exports.LocationModel = exports.ModelFileFields = exports.FileModel = exports.ModelGroupOwnerFields = exports.GroupOwnerModel = exports.ModelGroupFields = exports.GroupModel = exports.ModelBranchUserFields = exports.BranchUserModel = exports.ModelUserBranchFields = exports.UserBranchModel = exports.ModelAccountFields = exports.AccountModel = exports.ModelBusinessFields = exports.BusinessModel = exports.ModelAccessKeyFields = exports.AccessKeyModel = exports.ModelMemberFields = exports.MemberModel = exports.ModelDriverFields = exports.DriverModel = exports.ModelWorkerFields = exports.WorkerModel = exports.ModelOperatorFields = exports.OperatorModel = exports.ModelAdministratorFields = exports.AdministratorModel = exports.ModelRetailerFields = exports.RetailerModel = exports.ModelCustomerFields = exports.CustomerModel = exports.ModelUserPropFields = exports.UserPropModel = exports.ModelUserFields = exports.UserModel = void 0;
4
+ exports.ModelOneTimeCodeFields = exports.OneTimeCodeModel = exports.ModelNumberDateSequenceFields = exports.NumberDateSequenceModel = exports.ModelDocumentDocumentFields = exports.DocumentDocumentModel = exports.ModelDocumentItemFields = exports.DocumentItemModel = exports.ModelDocumentPaymentFields = exports.DocumentPaymentModel = exports.ModelDocumentLocationFields = exports.DocumentLocationModel = exports.ModelDocumentAmountFields = exports.DocumentAmountModel = exports.ModelDocumentProfileFields = exports.DocumentProfileModel = exports.ModelDocumentTotalFields = exports.DocumentTotalModel = exports.ModelDocumentFields = exports.DocumentModel = exports.ModelCategoryFields = exports.CategoryModel = exports.ModelUomFields = exports.UomModel = exports.ModelBrandFields = exports.BrandModel = exports.ModelItemFields = exports.ItemModel = exports.ModelProductFields = exports.ProductModel = exports.ModelAreaFields = exports.AreaModel = exports.ModelStateFields = exports.StateModel = exports.ModelCountryFields = exports.CountryModel = exports.ModelItemInjectionFieldFields = exports.ItemInjectionFieldModel = void 0;
5
5
  var UserModel_1 = require("./user/UserModel");
6
6
  Object.defineProperty(exports, "UserModel", { enumerable: true, get: function () { return UserModel_1.UserModel; } });
7
7
  Object.defineProperty(exports, "ModelUserFields", { enumerable: true, get: function () { return UserModel_1.ModelUserFields; } });
8
- var UserStatusModel_1 = require("./user/UserStatusModel");
9
- Object.defineProperty(exports, "UserStatusModel", { enumerable: true, get: function () { return UserStatusModel_1.UserStatusModel; } });
10
- Object.defineProperty(exports, "ModelUserStatusFields", { enumerable: true, get: function () { return UserStatusModel_1.ModelUserStatusFields; } });
8
+ // export { UserStatusModel, ModelUserStatusFields } from "./user/UserStatusModel"
11
9
  var UserPropModel_1 = require("./user/UserPropModel");
12
10
  Object.defineProperty(exports, "UserPropModel", { enumerable: true, get: function () { return UserPropModel_1.UserPropModel; } });
13
11
  Object.defineProperty(exports, "ModelUserPropFields", { enumerable: true, get: function () { return UserPropModel_1.ModelUserPropFields; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"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","sourcesContent":["export { UserModel, ModelUserFields } from \"./user/UserModel\"\nexport { UserStatusModel, ModelUserStatusFields } from \"./user/UserStatusModel\"\nexport { UserPropModel, ModelUserPropFields } from \"./user/UserPropModel\"\nexport { CustomerModel, ModelCustomerFields } from \"./user/CustomerModel\"\nexport { RetailerModel, ModelRetailerFields } from \"./user/RetailerModel\"\nexport { AdministratorModel, ModelAdministratorFields } from \"./user/AdministratorModel\"\nexport { OperatorModel, ModelOperatorFields } from \"./user/OperatorModel\"\nexport { WorkerModel, ModelWorkerFields } from \"./user/WorkerModel\"\nexport { DriverModel, ModelDriverFields } from \"./user/DriverModel\"\nexport { MemberModel, ModelMemberFields } from \"./user/MemberModel\"\nexport type { ModelUser, ModelUserCreateProps, ModelUserGetProps, ModelUserListProps } from \"./user/UserModel\";\nexport type { ModelUserStatus, ModelUserStatusCreateProps, ModelUserStatusGetProps, ModelUserStatusListProps } from \"./user/UserStatusModel\";\nexport type { ModelUserProp, ModelUserPropCreateProps, ModelUserPropGetProps, ModelUserPropListProps } from \"./user/UserPropModel\";\nexport type { ModelCustomer, ModelCustomerCreateProps, ModelCustomerGetProps, ModelCustomerListProps } from \"./user/CustomerModel\";\nexport type { ModelRetailer, ModelRetailerCreateProps, ModelRetailerGetProps, ModelRetailerListProps } from \"./user/RetailerModel\";\nexport type { ModelAdministrator, ModelAdministratorCreateProps, ModelAdministratorGetProps, ModelAdministratorListProps } from \"./user/AdministratorModel\";\nexport type { ModelOperator, ModelOperatorCreateProps, ModelOperatorGetProps, ModelOperatorListProps } from \"./user/OperatorModel\";\nexport type { ModelWorker, ModelWorkerCreateProps, ModelWorkerGetProps, ModelWorkerListProps } from \"./user/WorkerModel\";\nexport type { ModelDriver, ModelDriverCreateProps, ModelDriverGetProps, ModelDriverListProps } from \"./user/DriverModel\";\nexport type { ModelMember, ModelMemberCreateProps, ModelMemberGetProps, ModelMemberListProps } from \"./user/MemberModel\";\n\nexport { AccessKeyModel, ModelAccessKeyFields } from \"./auth/AccessKeyModel\"\nexport type { ModelAccessKey, ModelAccessKeyCreateProps, ModelAccessKeyGetProps, ModelAccessKeyListProps } from \"./auth/AccessKeyModel\";\n\nexport { BusinessModel, ModelBusinessFields } from \"./business/BusinessModel\"\nexport { AccountModel, ModelAccountFields } from \"./account/AccountModel\"\nexport type { ModelBusiness, ModelBusinessCreateProps, ModelBusinessGetProps, ModelBusinessListProps } from \"./business/BusinessModel\";\nexport type { ModelAccount, ModelAccountCreateProps, ModelAccountGetProps, ModelAccountListProps } from \"./account/AccountModel\";\n\nexport { UserBranchModel, ModelUserBranchFields } from \"./branch/UserBranchModel\"\nexport { BranchUserModel, ModelBranchUserFields } from \"./branch_user/BranchUserModel\"\nexport type { ModelUserBranch, ModelUserBranchCreateProps, ModelUserBranchGetProps, ModelUserBranchListProps } from \"./branch/UserBranchModel\";\nexport type { ModelBranchUser, ModelBranchUserCreateProps, ModelBranchUserGetProps, ModelBranchUserListProps } from \"./branch_user/BranchUserModel\";\n\nexport { GroupModel, ModelGroupFields } from \"./group/GroupModel\"\nexport { GroupOwnerModel, ModelGroupOwnerFields } from \"./group/GroupOwnerModel\"\nexport type { ModelGroup, ModelGroupCreateProps, ModelGroupGetProps, ModelGroupListProps } from \"./group/GroupModel\";\nexport type { ModelGroupOwner, ModelGroupOwnerCreateProps, ModelGroupOwnerGetProps, ModelGroupOwnerListProps } from \"./group/GroupOwnerModel\";\n\nexport { FileModel, ModelFileFields } from \"./file/FileModel\"\nexport type { ModelFile, ModelFileCreateProps, ModelFileGetProps, ModelFileListProps } from \"./file/FileModel\";\n\nexport { LocationModel, ModelLocationFields } from \"./location/LocationModel\"\nexport { LocationRackModel, ModelLocationRackFields } from \"./location/LocationRackModel\"\nexport { LocationSlotModel, ModelLocationSlotFields } from \"./location/LocationSlotModel\"\nexport type { ModelLocation, ModelLocationCreateProps, ModelLocationGetProps, ModelLocationListProps } from \"./location/LocationModel\";\nexport type { ModelLocationRack, ModelLocationRackCreateProps, ModelLocationRackGetProps, ModelLocationRackListProps } from \"./location/LocationRackModel\";\nexport type { ModelLocationSlot, ModelLocationSlotCreateProps, ModelLocationSlotGetProps, ModelLocationSlotListProps } from \"./location/LocationSlotModel\";\n\nexport { InjectionFieldModel, ModelInjectionFieldFields } from \"./injection_field/InjectionFieldModel\"\nexport { UserInjectionFieldModel, ModelUserInjectionFieldFields } from \"./injection_field/UserInjectionFieldModel\"\nexport { DocumentInjectionFieldModel, ModelDocumentInjectionFieldFields } from \"./injection_field/DocumentInjectionFieldModel\"\nexport { RepositoryInjectionFieldModel, ModelRepositoryInjectionFieldFields } from \"./injection_field/RepositoryInjectionFieldModel\"\nexport { LogisticInjectionFieldModel, ModelLogisticInjectionFieldFields } from \"./injection_field/LogisticInjectionFieldModel\"\nexport { ItemInjectionFieldModel, ModelItemInjectionFieldFields } from \"./injection_field/ItemInjectionFieldModel\"\nexport type { InjectionFieldTargetTableName } from \"./injection_field/InjectionFieldModel\"\nexport type { ModelUserInjectionField, ModelUserInjectionFieldCreateProps, ModelUserInjectionFieldGetProps, ModelUserInjectionFieldListProps } from \"./injection_field/UserInjectionFieldModel\";\nexport type { ModelDocumentInjectionField, ModelDocumentInjectionFieldCreateProps, ModelDocumentInjectionFieldGetProps, ModelDocumentInjectionFieldListProps } from \"./injection_field/DocumentInjectionFieldModel\";\nexport type { ModelRepositoryInjectionField, ModelRepositoryInjectionFieldCreateProps, ModelRepositoryInjectionFieldGetProps, ModelRepositoryInjectionFieldListProps } from \"./injection_field/RepositoryInjectionFieldModel\";\nexport type { ModelLogisticInjectionField, ModelLogisticInjectionFieldCreateProps, ModelLogisticInjectionFieldGetProps, ModelLogisticInjectionFieldListProps } from \"./injection_field/LogisticInjectionFieldModel\";\nexport type { ModelItemInjectionField, ModelItemInjectionFieldCreateProps, ModelItemInjectionFieldGetProps, ModelItemInjectionFieldListProps } from \"./injection_field/ItemInjectionFieldModel\";\n\nexport { CountryModel, ModelCountryFields } from \"./region/CountryModel\"\nexport { StateModel, ModelStateFields } from \"./region/StateModel\"\nexport { AreaModel, ModelAreaFields } from \"./region/AreaModel\"\nexport type { ModelCountry, ModelCountryCreateProps, ModelCountryGetProps, ModelCountryListProps } from \"./region/CountryModel\";\nexport type { ModelState, ModelStateCreateProps, ModelStateGetProps, ModelStateListProps } from \"./region/StateModel\";\nexport type { ModelArea, ModelAreaCreateProps, ModelAreaGetProps, ModelAreaListProps } from \"./region/AreaModel\";\n\nexport { ProductModel, ModelProductFields } from \"./item/ProductModel\"\nexport { ItemModel, ModelItemFields } from \"./item/ItemModel\"\nexport { BrandModel, ModelBrandFields } from \"./item/BrandModel\"\nexport { UomModel, ModelUomFields } from \"./item/UomModel\"\nexport { CategoryModel, ModelCategoryFields } from \"./item/CategoryModel\"\nexport type { ModelProduct, ModelProductCreateProps, ModelProductGetProps, ModelProductListProps } from \"./item/ProductModel\";\nexport type { ModelItem, ModelItemCreateProps, ModelItemGetProps, ModelItemListProps } from \"./item/ItemModel\";\nexport type { ModelBrand, ModelBrandCreateProps, ModelBrandGetProps, ModelBrandListProps } from \"./item/BrandModel\";\nexport type { ModelUom, ModelUomCreateProps, ModelUomGetProps, ModelUomListProps } from \"./item/UomModel\";\nexport type { ModelCategory, ModelCategoryCreateProps, ModelCategoryGetProps, ModelCategoryListProps } from \"./item/CategoryModel\";\n\nexport { DocumentModel, ModelDocumentFields } from \"./document/DocumentModel\"\n// export { DocumentNumberModel, ModelDocumentNumberFields } from \"./document/DocumentNumberModel_unuse\"\nexport { DocumentTotalModel, ModelDocumentTotalFields } from \"./document/DocumentTotalModel\"\nexport { DocumentProfileModel, ModelDocumentProfileFields } from \"./document/DocumentProfileModel\"\nexport { DocumentAmountModel, ModelDocumentAmountFields } from \"./document/DocumentAmountModel\"\nexport { DocumentLocationModel, ModelDocumentLocationFields } from \"./document/DocumentLocationModel\"\n// export { DocumentPropModel, ModelDocumentPropFields } from \"./document/DocumentPropModel\"\nexport { DocumentPaymentModel, ModelDocumentPaymentFields } from \"./document/DocumentPaymentModel\"\nexport { DocumentItemModel, ModelDocumentItemFields } from \"./document/DocumentItemModel\"\nexport { DocumentDocumentModel, ModelDocumentDocumentFields } from \"./document/DocumentDocumentModel\"\nexport type { ModelDocument, ModelDocumentCreateProps, ModelDocumentGetProps, ModelDocumentListProps } from \"./document/DocumentModel\";\nexport type { ModelDocumentProfile, ModelDocumentProfileCreateProps, ModelDocumentProfileGetProps, ModelDocumentProfileListProps } from \"./document/DocumentProfileModel\";\nexport type { ModelDocumentAmount, ModelDocumentAmountCreateProps, ModelDocumentAmountGetProps, ModelDocumentAmountListProps } from \"./document/DocumentAmountModel\";\n// export type { ModelDocumentNumber, ModelDocumentNumberCreateProps, ModelDocumentNumberGetProps, ModelDocumentNumberListProps } from \"./document/DocumentNumberModel_unuse\";\nexport type { ModelDocumentLocation, ModelDocumentLocationCreateProps, ModelDocumentLocationGetProps, ModelDocumentLocationListProps } from \"./document/DocumentLocationModel\";\n// export type { ModelDocumentProp, ModelDocumentPropCreateProps, ModelDocumentPropGetProps, ModelDocumentPropListProps } from \"./document/DocumentPropModel\";\nexport type { ModelDocumentPayment, ModelDocumentPaymentCreateProps, ModelDocumentPaymentGetProps, ModelDocumentPaymentListProps } from \"./document/DocumentPaymentModel\";\nexport type { ModelDocumentTotal, ModelDocumentTotalCreateProps, ModelDocumentTotalGetProps, ModelDocumentTotalListProps } from \"./document/DocumentTotalModel\";\nexport type { ModelDocumentItem, ModelDocumentItemCreateProps, ModelDocumentItemGetProps, ModelDocumentItemListProps } from \"./document/DocumentItemModel\";\nexport type { ModelDocumentDocument, ModelDocumentDocumentCreateProps, ModelDocumentDocumentGetProps, ModelDocumentDocumentListProps } from \"./document/DocumentDocumentModel\";\n\nexport { NumberDateSequenceModel, ModelNumberDateSequenceFields } from \"./others/NumberDateSequenceModel\"\nexport type { ModelNumberDateSequence, ModelNumberDateSequenceCreateProps, ModelNumberDateSequenceGetProps, ModelNumberDateSequenceListProps } from \"./others/NumberDateSequenceModel\";\nexport { OneTimeCodeModel, ModelOneTimeCodeFields } from \"./others/OneTimeCodeModel\"\nexport type { ModelOneTimeCode, ModelOneTimeCodeCreateProps, ModelOneTimeCodeGetProps, ModelOneTimeCodeListProps } from \"./others/OneTimeCodeModel\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;AAAA,8CAA6D;AAApD,sGAAA,SAAS,OAAA;AAAE,4GAAA,eAAe,OAAA;AACnC,kFAAkF;AAClF,sDAAyE;AAAhE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,sDAAyE;AAAhE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,sDAAyE;AAAhE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,gEAAwF;AAA/E,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AACrD,sDAAyE;AAAhE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,kDAAmE;AAA1D,0GAAA,WAAW,OAAA;AAAE,gHAAA,iBAAiB,OAAA;AACvC,kDAAmE;AAA1D,0GAAA,WAAW,OAAA;AAAE,gHAAA,iBAAiB,OAAA;AACvC,kDAAmE;AAA1D,0GAAA,WAAW,OAAA;AAAE,gHAAA,iBAAiB,OAAA;AAYvC,wDAA4E;AAAnE,gHAAA,cAAc,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAG7C,0DAA6E;AAApE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,uDAAyE;AAAhE,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAIzC,4DAAiF;AAAxE,kHAAA,eAAe,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAC/C,iEAAsF;AAA7E,kHAAA,eAAe,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAI/C,iDAAiE;AAAxD,wGAAA,UAAU,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACrC,2DAAgF;AAAvE,kHAAA,eAAe,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAI/C,8CAA6D;AAApD,sGAAA,SAAS,OAAA;AAAE,4GAAA,eAAe,OAAA;AAGnC,0DAA6E;AAApE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,kEAAyF;AAAhF,sHAAA,iBAAiB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AACnD,kEAAyF;AAAhF,sHAAA,iBAAiB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AAKnD,6EAAsG;AAA7F,0HAAA,mBAAmB,OAAA;AAAE,gIAAA,yBAAyB,OAAA;AACvD,qFAAkH;AAAzG,kIAAA,uBAAuB,OAAA;AAAE,wIAAA,6BAA6B,OAAA;AAC/D,6FAA8H;AAArH,0IAAA,2BAA2B,OAAA;AAAE,gJAAA,iCAAiC,OAAA;AACvE,iGAAoI;AAA3H,8IAAA,6BAA6B,OAAA;AAAE,oJAAA,mCAAmC,OAAA;AAC3E,6FAA8H;AAArH,0IAAA,2BAA2B,OAAA;AAAE,gJAAA,iCAAiC,OAAA;AACvE,qFAAkH;AAAzG,kIAAA,uBAAuB,OAAA;AAAE,wIAAA,6BAA6B,OAAA;AAQ/D,sDAAwE;AAA/D,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AACzC,kDAAkE;AAAzD,wGAAA,UAAU,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACrC,gDAA+D;AAAtD,sGAAA,SAAS,OAAA;AAAE,4GAAA,eAAe,OAAA;AAKnC,oDAAsE;AAA7D,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AACzC,8CAA6D;AAApD,sGAAA,SAAS,OAAA;AAAE,4GAAA,eAAe,OAAA;AACnC,gDAAgE;AAAvD,wGAAA,UAAU,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACrC,4CAA0D;AAAjD,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AACjC,sDAAyE;AAAhE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAO3C,0DAA6E;AAApE,8GAAA,aAAa,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC3C,wGAAwG;AACxG,oEAA4F;AAAnF,wHAAA,kBAAkB,OAAA;AAAE,8HAAA,wBAAwB,OAAA;AACrD,wEAAkG;AAAzF,4HAAA,oBAAoB,OAAA;AAAE,kIAAA,0BAA0B,OAAA;AACzD,sEAA+F;AAAtF,0HAAA,mBAAmB,OAAA;AAAE,gIAAA,yBAAyB,OAAA;AACvD,0EAAqG;AAA5F,8HAAA,qBAAqB,OAAA;AAAE,oIAAA,2BAA2B,OAAA;AAC3D,4FAA4F;AAC5F,wEAAkG;AAAzF,4HAAA,oBAAoB,OAAA;AAAE,kIAAA,0BAA0B,OAAA;AACzD,kEAAyF;AAAhF,sHAAA,iBAAiB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AACnD,0EAAqG;AAA5F,8HAAA,qBAAqB,OAAA;AAAE,oIAAA,2BAA2B,OAAA;AAY3D,4EAAyG;AAAhG,kIAAA,uBAAuB,OAAA;AAAE,wIAAA,6BAA6B,OAAA;AAE/D,8DAAoF;AAA3E,oHAAA,gBAAgB,OAAA;AAAE,0HAAA,sBAAsB,OAAA","sourcesContent":["export { UserModel, ModelUserFields } from \"./user/UserModel\"\n// export { UserStatusModel, ModelUserStatusFields } from \"./user/UserStatusModel\"\nexport { UserPropModel, ModelUserPropFields } from \"./user/UserPropModel\"\nexport { CustomerModel, ModelCustomerFields } from \"./user/CustomerModel\"\nexport { RetailerModel, ModelRetailerFields } from \"./user/RetailerModel\"\nexport { AdministratorModel, ModelAdministratorFields } from \"./user/AdministratorModel\"\nexport { OperatorModel, ModelOperatorFields } from \"./user/OperatorModel\"\nexport { WorkerModel, ModelWorkerFields } from \"./user/WorkerModel\"\nexport { DriverModel, ModelDriverFields } from \"./user/DriverModel\"\nexport { MemberModel, ModelMemberFields } from \"./user/MemberModel\"\nexport type { ModelUser, ModelUserCreateProps, ModelUserGetProps, ModelUserListProps } from \"./user/UserModel\";\n// export type { ModelUserStatus, ModelUserStatusCreateProps, ModelUserStatusGetProps, ModelUserStatusListProps } from \"./user/UserStatusModel\";\nexport type { ModelUserProp, ModelUserPropCreateProps, ModelUserPropGetProps, ModelUserPropListProps } from \"./user/UserPropModel\";\nexport type { ModelCustomer, ModelCustomerCreateProps, ModelCustomerGetProps, ModelCustomerListProps } from \"./user/CustomerModel\";\nexport type { ModelRetailer, ModelRetailerCreateProps, ModelRetailerGetProps, ModelRetailerListProps } from \"./user/RetailerModel\";\nexport type { ModelAdministrator, ModelAdministratorCreateProps, ModelAdministratorGetProps, ModelAdministratorListProps } from \"./user/AdministratorModel\";\nexport type { ModelOperator, ModelOperatorCreateProps, ModelOperatorGetProps, ModelOperatorListProps } from \"./user/OperatorModel\";\nexport type { ModelWorker, ModelWorkerCreateProps, ModelWorkerGetProps, ModelWorkerListProps } from \"./user/WorkerModel\";\nexport type { ModelDriver, ModelDriverCreateProps, ModelDriverGetProps, ModelDriverListProps } from \"./user/DriverModel\";\nexport type { ModelMember, ModelMemberCreateProps, ModelMemberGetProps, ModelMemberListProps } from \"./user/MemberModel\";\n\nexport { AccessKeyModel, ModelAccessKeyFields } from \"./auth/AccessKeyModel\"\nexport type { ModelAccessKey, ModelAccessKeyCreateProps, ModelAccessKeyGetProps, ModelAccessKeyListProps } from \"./auth/AccessKeyModel\";\n\nexport { BusinessModel, ModelBusinessFields } from \"./business/BusinessModel\"\nexport { AccountModel, ModelAccountFields } from \"./account/AccountModel\"\nexport type { ModelBusiness, ModelBusinessCreateProps, ModelBusinessGetProps, ModelBusinessListProps } from \"./business/BusinessModel\";\nexport type { ModelAccount, ModelAccountCreateProps, ModelAccountGetProps, ModelAccountListProps } from \"./account/AccountModel\";\n\nexport { UserBranchModel, ModelUserBranchFields } from \"./branch/UserBranchModel\"\nexport { BranchUserModel, ModelBranchUserFields } from \"./branch_user/BranchUserModel\"\nexport type { ModelUserBranch, ModelUserBranchCreateProps, ModelUserBranchGetProps, ModelUserBranchListProps } from \"./branch/UserBranchModel\";\nexport type { ModelBranchUser, ModelBranchUserCreateProps, ModelBranchUserGetProps, ModelBranchUserListProps } from \"./branch_user/BranchUserModel\";\n\nexport { GroupModel, ModelGroupFields } from \"./group/GroupModel\"\nexport { GroupOwnerModel, ModelGroupOwnerFields } from \"./group/GroupOwnerModel\"\nexport type { ModelGroup, ModelGroupCreateProps, ModelGroupGetProps, ModelGroupListProps } from \"./group/GroupModel\";\nexport type { ModelGroupOwner, ModelGroupOwnerCreateProps, ModelGroupOwnerGetProps, ModelGroupOwnerListProps } from \"./group/GroupOwnerModel\";\n\nexport { FileModel, ModelFileFields } from \"./file/FileModel\"\nexport type { ModelFile, ModelFileCreateProps, ModelFileGetProps, ModelFileListProps } from \"./file/FileModel\";\n\nexport { LocationModel, ModelLocationFields } from \"./location/LocationModel\"\nexport { LocationRackModel, ModelLocationRackFields } from \"./location/LocationRackModel\"\nexport { LocationSlotModel, ModelLocationSlotFields } from \"./location/LocationSlotModel\"\nexport type { ModelLocation, ModelLocationCreateProps, ModelLocationGetProps, ModelLocationListProps } from \"./location/LocationModel\";\nexport type { ModelLocationRack, ModelLocationRackCreateProps, ModelLocationRackGetProps, ModelLocationRackListProps } from \"./location/LocationRackModel\";\nexport type { ModelLocationSlot, ModelLocationSlotCreateProps, ModelLocationSlotGetProps, ModelLocationSlotListProps } from \"./location/LocationSlotModel\";\n\nexport { InjectionFieldModel, ModelInjectionFieldFields } from \"./injection_field/InjectionFieldModel\"\nexport { UserInjectionFieldModel, ModelUserInjectionFieldFields } from \"./injection_field/UserInjectionFieldModel\"\nexport { DocumentInjectionFieldModel, ModelDocumentInjectionFieldFields } from \"./injection_field/DocumentInjectionFieldModel\"\nexport { RepositoryInjectionFieldModel, ModelRepositoryInjectionFieldFields } from \"./injection_field/RepositoryInjectionFieldModel\"\nexport { LogisticInjectionFieldModel, ModelLogisticInjectionFieldFields } from \"./injection_field/LogisticInjectionFieldModel\"\nexport { ItemInjectionFieldModel, ModelItemInjectionFieldFields } from \"./injection_field/ItemInjectionFieldModel\"\nexport type { InjectionFieldTargetTableName } from \"./injection_field/InjectionFieldModel\"\nexport type { ModelUserInjectionField, ModelUserInjectionFieldCreateProps, ModelUserInjectionFieldGetProps, ModelUserInjectionFieldListProps } from \"./injection_field/UserInjectionFieldModel\";\nexport type { ModelDocumentInjectionField, ModelDocumentInjectionFieldCreateProps, ModelDocumentInjectionFieldGetProps, ModelDocumentInjectionFieldListProps } from \"./injection_field/DocumentInjectionFieldModel\";\nexport type { ModelRepositoryInjectionField, ModelRepositoryInjectionFieldCreateProps, ModelRepositoryInjectionFieldGetProps, ModelRepositoryInjectionFieldListProps } from \"./injection_field/RepositoryInjectionFieldModel\";\nexport type { ModelLogisticInjectionField, ModelLogisticInjectionFieldCreateProps, ModelLogisticInjectionFieldGetProps, ModelLogisticInjectionFieldListProps } from \"./injection_field/LogisticInjectionFieldModel\";\nexport type { ModelItemInjectionField, ModelItemInjectionFieldCreateProps, ModelItemInjectionFieldGetProps, ModelItemInjectionFieldListProps } from \"./injection_field/ItemInjectionFieldModel\";\n\nexport { CountryModel, ModelCountryFields } from \"./region/CountryModel\"\nexport { StateModel, ModelStateFields } from \"./region/StateModel\"\nexport { AreaModel, ModelAreaFields } from \"./region/AreaModel\"\nexport type { ModelCountry, ModelCountryCreateProps, ModelCountryGetProps, ModelCountryListProps } from \"./region/CountryModel\";\nexport type { ModelState, ModelStateCreateProps, ModelStateGetProps, ModelStateListProps } from \"./region/StateModel\";\nexport type { ModelArea, ModelAreaCreateProps, ModelAreaGetProps, ModelAreaListProps } from \"./region/AreaModel\";\n\nexport { ProductModel, ModelProductFields } from \"./item/ProductModel\"\nexport { ItemModel, ModelItemFields } from \"./item/ItemModel\"\nexport { BrandModel, ModelBrandFields } from \"./item/BrandModel\"\nexport { UomModel, ModelUomFields } from \"./item/UomModel\"\nexport { CategoryModel, ModelCategoryFields } from \"./item/CategoryModel\"\nexport type { ModelProduct, ModelProductCreateProps, ModelProductGetProps, ModelProductListProps } from \"./item/ProductModel\";\nexport type { ModelItem, ModelItemCreateProps, ModelItemGetProps, ModelItemListProps } from \"./item/ItemModel\";\nexport type { ModelBrand, ModelBrandCreateProps, ModelBrandGetProps, ModelBrandListProps } from \"./item/BrandModel\";\nexport type { ModelUom, ModelUomCreateProps, ModelUomGetProps, ModelUomListProps } from \"./item/UomModel\";\nexport type { ModelCategory, ModelCategoryCreateProps, ModelCategoryGetProps, ModelCategoryListProps } from \"./item/CategoryModel\";\n\nexport { DocumentModel, ModelDocumentFields } from \"./document/DocumentModel\"\n// export { DocumentNumberModel, ModelDocumentNumberFields } from \"./document/DocumentNumberModel_unuse\"\nexport { DocumentTotalModel, ModelDocumentTotalFields } from \"./document/DocumentTotalModel\"\nexport { DocumentProfileModel, ModelDocumentProfileFields } from \"./document/DocumentProfileModel\"\nexport { DocumentAmountModel, ModelDocumentAmountFields } from \"./document/DocumentAmountModel\"\nexport { DocumentLocationModel, ModelDocumentLocationFields } from \"./document/DocumentLocationModel\"\n// export { DocumentPropModel, ModelDocumentPropFields } from \"./document/DocumentPropModel\"\nexport { DocumentPaymentModel, ModelDocumentPaymentFields } from \"./document/DocumentPaymentModel\"\nexport { DocumentItemModel, ModelDocumentItemFields } from \"./document/DocumentItemModel\"\nexport { DocumentDocumentModel, ModelDocumentDocumentFields } from \"./document/DocumentDocumentModel\"\nexport type { ModelDocument, ModelDocumentCreateProps, ModelDocumentGetProps, ModelDocumentListProps } from \"./document/DocumentModel\";\nexport type { ModelDocumentProfile, ModelDocumentProfileCreateProps, ModelDocumentProfileGetProps, ModelDocumentProfileListProps } from \"./document/DocumentProfileModel\";\nexport type { ModelDocumentAmount, ModelDocumentAmountCreateProps, ModelDocumentAmountGetProps, ModelDocumentAmountListProps } from \"./document/DocumentAmountModel\";\n// export type { ModelDocumentNumber, ModelDocumentNumberCreateProps, ModelDocumentNumberGetProps, ModelDocumentNumberListProps } from \"./document/DocumentNumberModel_unuse\";\nexport type { ModelDocumentLocation, ModelDocumentLocationCreateProps, ModelDocumentLocationGetProps, ModelDocumentLocationListProps } from \"./document/DocumentLocationModel\";\n// export type { ModelDocumentProp, ModelDocumentPropCreateProps, ModelDocumentPropGetProps, ModelDocumentPropListProps } from \"./document/DocumentPropModel\";\nexport type { ModelDocumentPayment, ModelDocumentPaymentCreateProps, ModelDocumentPaymentGetProps, ModelDocumentPaymentListProps } from \"./document/DocumentPaymentModel\";\nexport type { ModelDocumentTotal, ModelDocumentTotalCreateProps, ModelDocumentTotalGetProps, ModelDocumentTotalListProps } from \"./document/DocumentTotalModel\";\nexport type { ModelDocumentItem, ModelDocumentItemCreateProps, ModelDocumentItemGetProps, ModelDocumentItemListProps } from \"./document/DocumentItemModel\";\nexport type { ModelDocumentDocument, ModelDocumentDocumentCreateProps, ModelDocumentDocumentGetProps, ModelDocumentDocumentListProps } from \"./document/DocumentDocumentModel\";\n\nexport { NumberDateSequenceModel, ModelNumberDateSequenceFields } from \"./others/NumberDateSequenceModel\"\nexport type { ModelNumberDateSequence, ModelNumberDateSequenceCreateProps, ModelNumberDateSequenceGetProps, ModelNumberDateSequenceListProps } from \"./others/NumberDateSequenceModel\";\nexport { OneTimeCodeModel, ModelOneTimeCodeFields } from \"./others/OneTimeCodeModel\"\nexport type { ModelOneTimeCode, ModelOneTimeCodeCreateProps, ModelOneTimeCodeGetProps, ModelOneTimeCodeListProps } from \"./others/OneTimeCodeModel\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ItemItemService.js","sourceRoot":"","sources":["../../../src/services/item/ItemItemService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n ItemModel,\n ModelItemFields,\n ModelGroupFields,\n ModelUserStatusFields,\n ModelUserPropFields,\n ModelLocationFields,\n ModelProductFields,\n ModelCategoryFields,\n ModelBrandFields,\n ModelUomFields\n} from \"@/models\";\n\nimport { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type ItemType = \"item\"\n\nexport const itemDataTypes = {\n itemInjectionFields: \"item_injection_fields\",\n // slotItem: \"slot_item\",\n // allSupplier: \"all_supplier\",\n // latestGrAmount: \"lastest_gr_amount\",\n // file: \"file\",\n // product: \"product\"\n}\n\nexport type ItemDataType = keyof typeof itemDataTypes;\n\nexport type ItemItemServiceProps = DefaultServiceProps & {};\n\nexport type ItemItemGetProps = {\n id: number,\n datatypes: ItemDataType[]\n};\n\nexport type ItemItemListProps = QueryList & {\n datatypes: ItemDataType[]\n};\n\nexport type ItemItemRemoveProps = {\n itemIds: BigInt[]\n};\n\nexport type ItemItemCreateProps = {\n data:\n // item\n {\n item: {\n productId: number\n uomId: number\n itemCode: string // code\n status: boolean\n\n isPackage: boolean\n itemDescription: string\n remark: string\n cost: number\n uomPrice: number\n\n floorPrice: number\n grossWeight: number\n volumeWeight: number\n netWeight: number\n dimensionWidth: number\n\n dimensionHeight: number\n dimensionLength: number\n cbm: number\n // transformRatio?: number\n // repackRemark?: string\n\n // supplierIds?: number[]\n // scanningCodePrefix?: number\n // scanningCodeSuffix?: number\n // relocateThresholdQty?: number\n // relocateTopupQty?: number\n\n // reorderThresholdQty?: number\n // reorderTopupQty?: number\n\n }\n }\n}\n\nexport type ItemItemUpdateProps = {\n itemId: number,\n data:\n // item\n {\n item: {\n // productId: number\n // uomId: number\n itemCode: string // code\n status: boolean\n\n isPackage: boolean\n itemDescription: string\n remark: string\n cost: number\n uomPrice: number\n\n floorPrice: number\n grossWeight: number\n volumeWeight: number\n netWeight: number\n dimensionWidth: number\n\n dimensionHeight: number\n dimensionLength: number\n cbm: number\n // transformRatio?: number\n // repackRemark?: string\n\n // supplierIds?: number[]\n // scanningCodePrefix?: number\n // scanningCodeSuffix?: number\n // relocateThresholdQty?: number\n // relocateTopupQty?: number\n\n // reorderThresholdQty?: number\n // reorderTopupQty?: number\n }\n }\n}\n\nconst getCreatePayload = (data: ItemItemCreateProps[\"data\"]) => {\n\n if (\"item\" in data) {\n\n // please ignore the item_name, model, summary\n\n return {\n [`${ModelItemFields.product_id}`]: data.item.productId,\n [`${ModelItemFields.uom_id}`]: data.item.uomId,\n [`${ModelItemFields.cbm}`]: data.item.cbm,\n [`${ModelItemFields.item_code}`]: data.item.itemCode,\n\n [`${ModelItemFields.cost}`]: data.item.cost,\n [`${ModelItemFields.uom_price}`]: data.item.uomPrice,\n [`${ModelItemFields.dimension_height}`]: data.item.dimensionHeight,\n [`${ModelItemFields.dimension_length}`]: data.item.dimensionLength,\n [`${ModelItemFields.dimension_width}`]: data.item.dimensionWidth,\n\n [`${ModelItemFields.floor_price}`]: data.item.floorPrice,\n [`${ModelItemFields.gross_weight}`]: data.item.grossWeight,\n [`${ModelItemFields.net_weight}`]: data.item.netWeight,\n [`${ModelItemFields.volume_weight}`]: data.item.volumeWeight,\n [`${ModelItemFields.is_package}`]: data.item.isPackage ? 1 : 0,\n\n [`${ModelItemFields.item_description}`]: data.item.itemDescription,\n [`${ModelItemFields.remark}`]: data.item.remark,\n [`${ModelItemFields.status}`]: data.item.status ? 1 : 0,\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: ItemItemUpdateProps[\"data\"]) => {\n\n if (\"item\" in data) {\n\n return {\n // [`${ModelItemFields.product_id}`]: data.item.productId, // cannot changed\n // [`${ModelItemFields.uom_id}`]: data.item.uomId, // cannot changed\n [`${ModelItemFields.cbm}`]: data.item.cbm,\n [`${ModelItemFields.item_code}`]: data.item.itemCode,\n\n [`${ModelItemFields.cost}`]: data.item.cost,\n [`${ModelItemFields.uom_price}`]: data.item.uomPrice,\n [`${ModelItemFields.dimension_height}`]: data.item.dimensionHeight,\n [`${ModelItemFields.dimension_length}`]: data.item.dimensionLength,\n [`${ModelItemFields.dimension_width}`]: data.item.dimensionWidth,\n\n [`${ModelItemFields.floor_price}`]: data.item.floorPrice,\n [`${ModelItemFields.gross_weight}`]: data.item.grossWeight,\n [`${ModelItemFields.net_weight}`]: data.item.netWeight,\n [`${ModelItemFields.volume_weight}`]: data.item.volumeWeight,\n [`${ModelItemFields.is_package}`]: data.item.isPackage ? 1 : 0,\n\n [`${ModelItemFields.item_description}`]: data.item.itemDescription,\n [`${ModelItemFields.remark}`]: data.item.remark,\n [`${ModelItemFields.status}`]: data.item.status ? 1 : 0,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`itm.${ModelItemFields.item_id}`]: \"item_id\",\n // [`itm.${ModelItemFields.brand_id}`]: \"brand_id\", // no use\n // [`itm.${ModelItemFields.category_id}`]: \"category_id\", // no use\n [`itm.${ModelItemFields.uom_id}`]: \"uom_id\",\n [`itm.${ModelItemFields.cbm}::float`]: \"cbm\",\n [`itm.${ModelItemFields.item_code}`]: \"item_code\",\n [`itm.${ModelItemFields.cost}::float`]: \"cost\",\n [`itm.${ModelItemFields.dimension_height}::float`]: \"dimension_height\",\n [`itm.${ModelItemFields.dimension_length}::float`]: \"dimension_length\",\n [`itm.${ModelItemFields.dimension_width}::float`]: \"dimension_width\",\n [`itm.${ModelItemFields.floor_price}::float`]: \"floor_price\",\n [`itm.${ModelItemFields.gross_weight}::float`]: \"gross_weight\",\n [`itm.${ModelItemFields.is_package}`]: \"is_package\",\n [`itm.${ModelItemFields.item_description}`]: \"item_description\",\n // [`itm.${ModelItemFields.item_name}`]: \"item_name\", // no use\n // [`itm.${ModelItemFields.model}`]: \"model\", // no use \n [`itm.${ModelItemFields.net_weight}::float`]: \"net_weight\",\n [`itm.${ModelItemFields.remark}`]: \"remark\",\n [`itm.${ModelItemFields.status}`]: \"status\",\n [`itm.${ModelItemFields.summary}`]: \"summary\",\n [`itm.${ModelItemFields.uom_bal}::float`]: \"uom_bal\",\n [`itm.${ModelItemFields.uom_price}::float`]: \"uom_price\",\n [`itm.${ModelItemFields.volume_weight}::float`]: \"volume_weight\",\n}\n\nlet itemSqlSelect = {\n [`prd.${ModelProductFields.product_id}`]: \"product_id\",\n [`prd.${ModelProductFields.brand_id}`]: \"brand_id\",\n [`prd.${ModelProductFields.category_id}`]: \"category_id\",\n [`prd.${ModelProductFields.product_code}`]: \"product_code\",\n [`prd.${ModelProductFields.product_name}`]: \"product_name\",\n [`prd.${ModelProductFields.description}`]: \"description\",\n [`prd.${ModelProductFields.model}`]: \"model\",\n [`prd.${ModelProductFields.status}`]: \"status\",\n [`prd.${ModelProductFields.summary}`]: \"summary\",\n [`catg.${ModelCategoryFields.name}`]: \"category_name\",\n [`catg.${ModelCategoryFields.status}`]: \"category_status\",\n [`catg.${ModelCategoryFields.description}`]: \"category_description\",\n [`catg.${ModelCategoryFields.parent_category_id}`]: \"parent_category_id\",\n [`brd.${ModelBrandFields.name}`]: \"brand_status\",\n [`brd.${ModelBrandFields.status}`]: \"brand_status\",\n [`brd.${ModelBrandFields.description}`]: \"brand_description\",\n [`uom.${ModelUomFields.decimal_digit}`]: \"uom_decimal_digit\",\n [`uom.${ModelUomFields.description}`]: \"uom_description\",\n [`uom.${ModelUomFields.name}`]: \"uom_name\",\n [`uom.${ModelUomFields.status}`]: \"uom_status\",\n [`uom.${ModelUomFields.metric_type}`]: \"uom_metric_type\",\n [`uom.${ModelUomFields.metric_type_display_name}`]: \"uom_metric_type_display_name\",\n}\n\nlet defaultSqlSelect = {\n [`itm.${ModelItemFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`itm.${ModelItemFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`itm.${ModelItemFields.isdelete}`]: \"isdelete\",\n [`itm.${ModelItemFields.istrash}`]: \"istrash\",\n [`itm.${ModelItemFields.accountid}`]: \"accountid\",\n}\n\nexport const ItemItemService = (props: ItemItemServiceProps) => {\n\n const {\n // prisma,\n // accountId = 0,\n // actionUserId = 0\n ...rest\n } = props\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"item\" })\n\n const itemModel = ItemModel({ ...rest })\n\n const createItem = async ({ data }: ItemItemCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create item payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await itemModel.create({ data: _data })\n\n return response\n }\n\n const updateItem = async ({ itemId, data }: ItemItemUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update item payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await itemModel.update({ where: { [`${ModelItemFields.item_id}`]: itemId }, data: _data })\n\n return response\n }\n\n const getItem = async ({ id, datatypes = [] }: ItemItemGetProps) => {\n\n let { data } = await listItems({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelItemFields.item_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelItemFields.item_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listItems = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: ItemItemListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(itm.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, itemSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"itm\", \"products\", \"prd\", [\"itm.product_id = prd.product_id\", \"prd.isdelete = false\", \"prd.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"uoms\", \"uom\", [\"itm.uom_id = uom.uom_id\", \"uom.isdelete = false\", \"uom.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"categories\", \"catg\", [\"prd.category_id = catg.category_id\", \"catg.isdelete = false\", \"catg.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"brands\", \"brd\", [\"prd.brand_id = brd.brand_id\", \"brd.isdelete = false\", \"brd.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"users\", \"creator\", [\"itm.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"users\", \"updater\", [\"itm.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"user_status\", \"usrsta_isowner\", [\"itm.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"user_props\", \"usrprop_location\", [\"itm.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"group_owners\", \"grpown\", [\"itm.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(itemSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...itemSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(itemDataTypes.itemInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"item\")\n\n const injectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"iif\", activeInjectionFields)\n\n // const injectionFieldSqlSelect = a.reduce((acc, col) => {\n // acc[`iif.${col}`] = `${col}`;\n // return acc;\n // }, {} as Record<string, string>);\n\n // let injectionFieldSqlSelect = {\n // [`iif.itm_itm_inttest`]: \"itm_itm_inttest\",\n // // [`iif.${ModelUserFields.login_username}`]: \"login_username\",\n // // [`iif.${ModelUserFields.user_type}`]: \"user_type\",\n // // [`iif.${ModelUserFields.firstname}`]: \"firstname\",\n // // [`iif.${ModelUserFields.lastname}`]: \"lastname\",\n // // [`iif.${ModelUserFields.contact}`]: \"contact\",\n // // [`iif.${ModelUserFields.email}`]: \"email\",\n // }\n\n filterColumns = { ...filterColumns, ...injectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, injectionFieldSqlSelect)]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"itm\", \"item_injection_fields\", \"iif\", [\"itm.item_id = iif.item_id\", \"iif.field_ref = 'item'\", \"iif.field_module = 'item'\", \"iif.isdelete = false\", \"iif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(injectionFieldSqlSelect)]\n }\n\n // if (datatypes.includes(itemDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area}', location.area,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"itm.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(itemDataTypes.locationCount)) {\n\n // let locationCountSqlSelect = {\n // [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"itm.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"itm.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `itm.isdelete = false`,\n `itm.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: \"items\",\n mainAlias: \"itm\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await itemModel.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 removeItems = async ({ itemIds }: ItemItemRemoveProps) => {\n\n if (!itemIds.length) throwError('itemIds is required');\n\n const response = await itemModel.remove({ where: { [`${ModelItemFields.item_id}`]: { in: itemIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(itemDataTypes);\n }\n\n return {\n createItem,\n updateItem,\n getItem,\n listItems,\n removeItems,\n getDataTypes\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"ItemItemService.js","sourceRoot":"","sources":["../../../src/services/item/ItemItemService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n ItemModel,\n ModelItemFields,\n ModelProductFields,\n ModelCategoryFields,\n ModelBrandFields,\n ModelUomFields\n} from \"@/models\";\n\nimport { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type ItemType = \"item\"\n\nexport const itemDataTypes = {\n itemInjectionFields: \"item_injection_fields\",\n // slotItem: \"slot_item\",\n // allSupplier: \"all_supplier\",\n // latestGrAmount: \"lastest_gr_amount\",\n // file: \"file\",\n // product: \"product\"\n}\n\nexport type ItemDataType = keyof typeof itemDataTypes;\n\nexport type ItemItemServiceProps = DefaultServiceProps & {};\n\nexport type ItemItemGetProps = {\n id: number,\n datatypes: ItemDataType[]\n};\n\nexport type ItemItemListProps = QueryList & {\n datatypes: ItemDataType[]\n};\n\nexport type ItemItemRemoveProps = {\n itemIds: BigInt[]\n};\n\nexport type ItemItemCreateProps = {\n data:\n // item\n {\n item: {\n productId: number\n uomId: number\n itemCode: string // code\n status: boolean\n\n isPackage: boolean\n itemDescription: string\n remark: string\n cost: number\n uomPrice: number\n\n floorPrice: number\n grossWeight: number\n volumeWeight: number\n netWeight: number\n dimensionWidth: number\n\n dimensionHeight: number\n dimensionLength: number\n cbm: number\n // transformRatio?: number\n // repackRemark?: string\n\n // supplierIds?: number[]\n // scanningCodePrefix?: number\n // scanningCodeSuffix?: number\n // relocateThresholdQty?: number\n // relocateTopupQty?: number\n\n // reorderThresholdQty?: number\n // reorderTopupQty?: number\n\n }\n }\n}\n\nexport type ItemItemUpdateProps = {\n itemId: number,\n data:\n // item\n {\n item: {\n // productId: number\n // uomId: number\n itemCode: string // code\n status: boolean\n\n isPackage: boolean\n itemDescription: string\n remark: string\n cost: number\n uomPrice: number\n\n floorPrice: number\n grossWeight: number\n volumeWeight: number\n netWeight: number\n dimensionWidth: number\n\n dimensionHeight: number\n dimensionLength: number\n cbm: number\n // transformRatio?: number\n // repackRemark?: string\n\n // supplierIds?: number[]\n // scanningCodePrefix?: number\n // scanningCodeSuffix?: number\n // relocateThresholdQty?: number\n // relocateTopupQty?: number\n\n // reorderThresholdQty?: number\n // reorderTopupQty?: number\n }\n }\n}\n\nconst getCreatePayload = (data: ItemItemCreateProps[\"data\"]) => {\n\n if (\"item\" in data) {\n\n // please ignore the item_name, model, summary\n\n return {\n [`${ModelItemFields.product_id}`]: data.item.productId,\n [`${ModelItemFields.uom_id}`]: data.item.uomId,\n [`${ModelItemFields.cbm}`]: data.item.cbm,\n [`${ModelItemFields.item_code}`]: data.item.itemCode,\n\n [`${ModelItemFields.cost}`]: data.item.cost,\n [`${ModelItemFields.uom_price}`]: data.item.uomPrice,\n [`${ModelItemFields.dimension_height}`]: data.item.dimensionHeight,\n [`${ModelItemFields.dimension_length}`]: data.item.dimensionLength,\n [`${ModelItemFields.dimension_width}`]: data.item.dimensionWidth,\n\n [`${ModelItemFields.floor_price}`]: data.item.floorPrice,\n [`${ModelItemFields.gross_weight}`]: data.item.grossWeight,\n [`${ModelItemFields.net_weight}`]: data.item.netWeight,\n [`${ModelItemFields.volume_weight}`]: data.item.volumeWeight,\n [`${ModelItemFields.is_package}`]: data.item.isPackage ? 1 : 0,\n\n [`${ModelItemFields.item_description}`]: data.item.itemDescription,\n [`${ModelItemFields.remark}`]: data.item.remark,\n [`${ModelItemFields.status}`]: data.item.status ? 1 : 0,\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: ItemItemUpdateProps[\"data\"]) => {\n\n if (\"item\" in data) {\n\n return {\n // [`${ModelItemFields.product_id}`]: data.item.productId, // cannot changed\n // [`${ModelItemFields.uom_id}`]: data.item.uomId, // cannot changed\n [`${ModelItemFields.cbm}`]: data.item.cbm,\n [`${ModelItemFields.item_code}`]: data.item.itemCode,\n\n [`${ModelItemFields.cost}`]: data.item.cost,\n [`${ModelItemFields.uom_price}`]: data.item.uomPrice,\n [`${ModelItemFields.dimension_height}`]: data.item.dimensionHeight,\n [`${ModelItemFields.dimension_length}`]: data.item.dimensionLength,\n [`${ModelItemFields.dimension_width}`]: data.item.dimensionWidth,\n\n [`${ModelItemFields.floor_price}`]: data.item.floorPrice,\n [`${ModelItemFields.gross_weight}`]: data.item.grossWeight,\n [`${ModelItemFields.net_weight}`]: data.item.netWeight,\n [`${ModelItemFields.volume_weight}`]: data.item.volumeWeight,\n [`${ModelItemFields.is_package}`]: data.item.isPackage ? 1 : 0,\n\n [`${ModelItemFields.item_description}`]: data.item.itemDescription,\n [`${ModelItemFields.remark}`]: data.item.remark,\n [`${ModelItemFields.status}`]: data.item.status ? 1 : 0,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`itm.${ModelItemFields.item_id}`]: \"item_id\",\n // [`itm.${ModelItemFields.brand_id}`]: \"brand_id\", // no use\n // [`itm.${ModelItemFields.category_id}`]: \"category_id\", // no use\n [`itm.${ModelItemFields.uom_id}`]: \"uom_id\",\n [`itm.${ModelItemFields.cbm}::float`]: \"cbm\",\n [`itm.${ModelItemFields.item_code}`]: \"item_code\",\n [`itm.${ModelItemFields.cost}::float`]: \"cost\",\n [`itm.${ModelItemFields.dimension_height}::float`]: \"dimension_height\",\n [`itm.${ModelItemFields.dimension_length}::float`]: \"dimension_length\",\n [`itm.${ModelItemFields.dimension_width}::float`]: \"dimension_width\",\n [`itm.${ModelItemFields.floor_price}::float`]: \"floor_price\",\n [`itm.${ModelItemFields.gross_weight}::float`]: \"gross_weight\",\n [`itm.${ModelItemFields.is_package}`]: \"is_package\",\n [`itm.${ModelItemFields.item_description}`]: \"item_description\",\n // [`itm.${ModelItemFields.item_name}`]: \"item_name\", // no use\n // [`itm.${ModelItemFields.model}`]: \"model\", // no use \n [`itm.${ModelItemFields.net_weight}::float`]: \"net_weight\",\n [`itm.${ModelItemFields.remark}`]: \"remark\",\n [`itm.${ModelItemFields.status}`]: \"status\",\n [`itm.${ModelItemFields.summary}`]: \"summary\",\n [`itm.${ModelItemFields.uom_bal}::float`]: \"uom_bal\",\n [`itm.${ModelItemFields.uom_price}::float`]: \"uom_price\",\n [`itm.${ModelItemFields.volume_weight}::float`]: \"volume_weight\",\n}\n\nlet itemSqlSelect = {\n [`prd.${ModelProductFields.product_id}`]: \"product_id\",\n [`prd.${ModelProductFields.brand_id}`]: \"brand_id\",\n [`prd.${ModelProductFields.category_id}`]: \"category_id\",\n [`prd.${ModelProductFields.product_code}`]: \"product_code\",\n [`prd.${ModelProductFields.product_name}`]: \"product_name\",\n [`prd.${ModelProductFields.description}`]: \"description\",\n [`prd.${ModelProductFields.model}`]: \"model\",\n [`prd.${ModelProductFields.status}`]: \"status\",\n [`prd.${ModelProductFields.summary}`]: \"summary\",\n [`catg.${ModelCategoryFields.name}`]: \"category_name\",\n [`catg.${ModelCategoryFields.status}`]: \"category_status\",\n [`catg.${ModelCategoryFields.description}`]: \"category_description\",\n [`catg.${ModelCategoryFields.parent_category_id}`]: \"parent_category_id\",\n [`brd.${ModelBrandFields.name}`]: \"brand_status\",\n [`brd.${ModelBrandFields.status}`]: \"brand_status\",\n [`brd.${ModelBrandFields.description}`]: \"brand_description\",\n [`uom.${ModelUomFields.decimal_digit}`]: \"uom_decimal_digit\",\n [`uom.${ModelUomFields.description}`]: \"uom_description\",\n [`uom.${ModelUomFields.name}`]: \"uom_name\",\n [`uom.${ModelUomFields.status}`]: \"uom_status\",\n [`uom.${ModelUomFields.metric_type}`]: \"uom_metric_type\",\n [`uom.${ModelUomFields.metric_type_display_name}`]: \"uom_metric_type_display_name\",\n}\n\nlet defaultSqlSelect = {\n [`itm.${ModelItemFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`itm.${ModelItemFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`itm.${ModelItemFields.isdelete}`]: \"isdelete\",\n [`itm.${ModelItemFields.istrash}`]: \"istrash\",\n [`itm.${ModelItemFields.accountid}`]: \"accountid\",\n}\n\nexport const ItemItemService = (props: ItemItemServiceProps) => {\n\n const {\n // prisma,\n // accountId = 0,\n // actionUserId = 0\n ...rest\n } = props\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"item\" })\n\n const itemModel = ItemModel({ ...rest })\n\n const createItem = async ({ data }: ItemItemCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create item payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await itemModel.create({ data: _data })\n\n return response\n }\n\n const updateItem = async ({ itemId, data }: ItemItemUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update item payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await itemModel.update({ where: { [`${ModelItemFields.item_id}`]: itemId }, data: _data })\n\n return response\n }\n\n const getItem = async ({ id, datatypes = [] }: ItemItemGetProps) => {\n\n let { data } = await listItems({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelItemFields.item_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelItemFields.item_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listItems = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: ItemItemListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(itm.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, itemSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"itm\", \"products\", \"prd\", [\"itm.product_id = prd.product_id\", \"prd.isdelete = false\", \"prd.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"uoms\", \"uom\", [\"itm.uom_id = uom.uom_id\", \"uom.isdelete = false\", \"uom.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"categories\", \"catg\", [\"prd.category_id = catg.category_id\", \"catg.isdelete = false\", \"catg.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"brands\", \"brd\", [\"prd.brand_id = brd.brand_id\", \"brd.isdelete = false\", \"brd.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"users\", \"creator\", [\"itm.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"users\", \"updater\", [\"itm.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"user_status\", \"usrsta_isowner\", [\"itm.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"user_props\", \"usrprop_location\", [\"itm.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"group_owners\", \"grpown\", [\"itm.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n // buildSqlRelation(\"left\", \"itm\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(itemSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...itemSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(itemDataTypes.itemInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"item\")\n\n const injectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"iif\", activeInjectionFields)\n\n // const injectionFieldSqlSelect = a.reduce((acc, col) => {\n // acc[`iif.${col}`] = `${col}`;\n // return acc;\n // }, {} as Record<string, string>);\n\n // let injectionFieldSqlSelect = {\n // [`iif.itm_itm_inttest`]: \"itm_itm_inttest\",\n // // [`iif.${ModelUserFields.login_username}`]: \"login_username\",\n // // [`iif.${ModelUserFields.user_type}`]: \"user_type\",\n // // [`iif.${ModelUserFields.firstname}`]: \"firstname\",\n // // [`iif.${ModelUserFields.lastname}`]: \"lastname\",\n // // [`iif.${ModelUserFields.contact}`]: \"contact\",\n // // [`iif.${ModelUserFields.email}`]: \"email\",\n // }\n\n filterColumns = { ...filterColumns, ...injectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, injectionFieldSqlSelect)]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"itm\", \"item_injection_fields\", \"iif\", [\"itm.item_id = iif.item_id\", \"iif.field_ref = 'item'\", \"iif.field_module = 'item'\", \"iif.isdelete = false\", \"iif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(injectionFieldSqlSelect)]\n }\n\n // if (datatypes.includes(itemDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area}', location.area,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"itm.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(itemDataTypes.locationCount)) {\n\n // let locationCountSqlSelect = {\n // [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"itm.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"itm.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `itm.isdelete = false`,\n `itm.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: \"items\",\n mainAlias: \"itm\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await itemModel.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 removeItems = async ({ itemIds }: ItemItemRemoveProps) => {\n\n if (!itemIds.length) throwError('itemIds is required');\n\n const response = await itemModel.remove({ where: { [`${ModelItemFields.item_id}`]: { in: itemIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(itemDataTypes);\n }\n\n return {\n createItem,\n updateItem,\n getItem,\n listItems,\n removeItems,\n getDataTypes\n }\n\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AdministratorService.js","sourceRoot":"","sources":["../../../src/services/user/AdministratorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n AdministratorModel,\n ModelAdministratorFields,\n ModelGroupFields,\n ModelUserStatusFields,\n ModelUserPropFields,\n ModelLocationFields\n} from \"@/models\";\n\nimport { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type UserType = \"administrator\"\n\nexport const administratorDataTypes = {\n location: \"location\",\n locationCount: \"location_count\",\n administratorInjectionFields: \"administrator_injection_fields\",\n}\n\nexport type AdministratorDataType = keyof typeof administratorDataTypes;\n\nexport type AdministratorServiceProps = DefaultServiceProps & {};\n\nexport type AdministratorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorListProps = QueryList & {\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type AdministratorCreateProps = {\n data:\n // administrator\n {\n administrator: {\n userId: number,\n isOwner: boolean\n }\n }\n}\n\nexport type AdministratorUpdateProps = {\n userId: number,\n data:\n // administrator\n {\n administrator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: AdministratorCreateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n [`${ModelAdministratorFields.is_owner}`]: Boolean(data.administrator.isOwner),\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: AdministratorUpdateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n // [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`adm.${ModelAdministratorFields.administrator_id}`]: \"administrator_id\",\n [`adm.${ModelAdministratorFields.user_id}`]: \"user_id\",\n [`adm.${ModelAdministratorFields.is_owner}`]: \"is_owner\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`usr.${ModelUserFields.contact}`]: \"contact\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`adm.${ModelAdministratorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`adm.${ModelAdministratorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`adm.${ModelAdministratorFields.isdelete}`]: \"isdelete\",\n [`adm.${ModelAdministratorFields.istrash}`]: \"istrash\",\n [`adm.${ModelAdministratorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\nlet userPropLocationSqlSelect = {\n // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n ''\n )`]: \"location_id\",\n // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n [`COALESCE(\n STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n ''\n )`]: \"location_name\",\n}\n\nlet groupOwnerSqlSelect = {\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n ''\n )`]: \"access_group_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n ''\n )`]: \"access_group_label\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n ''\n )`]: \"access_group_description\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n ''\n )`]: \"access_group_type\"\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelGroupFields.group_label}', grp.group_label,\n // '${ModelGroupFields.group_id}', grp.group_id,\n // '${ModelGroupFields.group_type}', grp.group_type\n // )\n // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n // '[]'\n // )`]: \"grp\"\n}\n\nexport const AdministratorService = (props: AdministratorServiceProps) => {\n\n const {\n // prisma,\n // accountId = 0,\n // actionUserId = 0\n ...rest\n } = props\n\n const administratorModel = AdministratorModel({ ...rest })\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createAdministrator = async ({ data }: AdministratorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.create({ data: _data })\n\n return response\n }\n\n const updateAdministrator = async ({ userId, data }: AdministratorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.update({ where: { [`${ModelAdministratorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getAdministrator = async ({ id, datatypes = [], includePassword = false, skipFilterAccountId = false }: AdministratorGetProps) => {\n\n let { data } = await listAdministrators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: \"user_id\", operator: \"=\", value: id }],\n sortfield: \"user_id\",\n sortorder: \"ASC\",\n datatypes,\n skipFilterAccountId\n })\n\n return data[0] ?? null;\n\n };\n\n const listAdministrators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = [],\n skipFilterAccountId = false\n }: AdministratorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(adm.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n buildSqlSelect(``, userPropLocationSqlSelect),\n buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"adm\", \"users\", \"usr\", [\"adm.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"creator\", [\"adm.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"updater\", [\"adm.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"adm\", \"user_status\", \"usrsta_isowner\", [\"adm.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"user_props\", \"usrprop_location\", [\"adm.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"group_owners\", \"grpown\", [\"adm.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(administratorDataTypes.administratorInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"adm.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n }\n\n if (datatypes.includes(administratorDataTypes.location)) {\n\n let locationSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelLocationFields.location_id}', location.location_id,\n '${ModelLocationFields.location_code}', location.location_code,\n '${ModelLocationFields.location_name}', location.location_name,\n '${ModelLocationFields.location_type}', location.location_type,\n '${ModelLocationFields.address_1}', location.address_1,\n '${ModelLocationFields.address_2}', location.address_2,\n '${ModelLocationFields.area_id}', location.area_id,\n '${ModelLocationFields.country_id}', location.country_id,\n '${ModelLocationFields.state_id}', location.state_id,\n '${ModelLocationFields.postcode}', location.postcode,\n '${ModelLocationFields.is_default}', location.is_default,\n '${ModelLocationFields.person_contact}', location.person_contact,\n '${ModelLocationFields.person_name}', location.person_contact,\n '${ModelLocationFields.person_email}', location.person_email,\n '${ModelLocationFields.isdelete}', location.isdelete,\n '${ModelLocationFields.istrash}', location.istrash\n )\n ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n '[]'\n )`]: \"locations\"\n }\n\n filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"adm.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n }\n\n if (datatypes.includes(administratorDataTypes.locationCount)) {\n\n let locationCountSqlSelect = {\n [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n }\n\n filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"adm.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"adm.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `adm.isdelete = false`,\n `adm.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: \"administrators\",\n mainAlias: \"adm\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId\n })\n\n data = await administratorModel.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 removeAdministrators = async ({ userIds }: AdministratorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await administratorModel.remove({\n where: {\n [`${ModelAdministratorFields.user_id}`]: {\n in: userIds\n },\n [`${ModelAdministratorFields.is_owner}`]: false // cannot default is_owner account\n }\n });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(administratorDataTypes);\n }\n\n return {\n createAdministrator,\n updateAdministrator,\n getAdministrator,\n listAdministrators,\n removeAdministrators,\n getDataTypes\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"AdministratorService.js","sourceRoot":"","sources":["../../../src/services/user/AdministratorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n AdministratorModel,\n ModelAdministratorFields,\n ModelGroupFields,\n ModelUserPropFields,\n ModelLocationFields\n} from \"@/models\";\n\nimport { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type UserType = \"administrator\"\n\nexport const administratorDataTypes = {\n location: \"location\",\n locationCount: \"location_count\",\n administratorInjectionFields: \"administrator_injection_fields\",\n}\n\nexport type AdministratorDataType = keyof typeof administratorDataTypes;\n\nexport type AdministratorServiceProps = DefaultServiceProps & {};\n\nexport type AdministratorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorListProps = QueryList & {\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type AdministratorCreateProps = {\n data:\n // administrator\n {\n administrator: {\n userId: number,\n isOwner: boolean\n }\n }\n}\n\nexport type AdministratorUpdateProps = {\n userId: number,\n data:\n // administrator\n {\n administrator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: AdministratorCreateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n [`${ModelAdministratorFields.is_owner}`]: Boolean(data.administrator.isOwner),\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: AdministratorUpdateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n // [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`adm.${ModelAdministratorFields.administrator_id}`]: \"administrator_id\",\n [`adm.${ModelAdministratorFields.user_id}`]: \"user_id\",\n [`adm.${ModelAdministratorFields.is_owner}`]: \"is_owner\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`usr.${ModelUserFields.contact}`]: \"contact\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`adm.${ModelAdministratorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`adm.${ModelAdministratorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`adm.${ModelAdministratorFields.isdelete}`]: \"isdelete\",\n [`adm.${ModelAdministratorFields.istrash}`]: \"istrash\",\n [`adm.${ModelAdministratorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\nlet userPropLocationSqlSelect = {\n // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n ''\n )`]: \"location_id\",\n // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n [`COALESCE(\n STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n ''\n )`]: \"location_name\",\n}\n\nlet groupOwnerSqlSelect = {\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n ''\n )`]: \"access_group_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n ''\n )`]: \"access_group_label\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n ''\n )`]: \"access_group_description\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n ''\n )`]: \"access_group_type\"\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelGroupFields.group_label}', grp.group_label,\n // '${ModelGroupFields.group_id}', grp.group_id,\n // '${ModelGroupFields.group_type}', grp.group_type\n // )\n // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n // '[]'\n // )`]: \"grp\"\n}\n\nexport const AdministratorService = (props: AdministratorServiceProps) => {\n\n const {\n // prisma,\n // accountId = 0,\n // actionUserId = 0\n ...rest\n } = props\n\n const administratorModel = AdministratorModel({ ...rest })\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createAdministrator = async ({ data }: AdministratorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.create({ data: _data })\n\n return response\n }\n\n const updateAdministrator = async ({ userId, data }: AdministratorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.update({ where: { [`${ModelAdministratorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getAdministrator = async ({ id, datatypes = [], includePassword = false, skipFilterAccountId = false }: AdministratorGetProps) => {\n\n let { data } = await listAdministrators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: \"user_id\", operator: \"=\", value: id }],\n sortfield: \"user_id\",\n sortorder: \"ASC\",\n datatypes,\n skipFilterAccountId\n })\n\n return data[0] ?? null;\n\n };\n\n const listAdministrators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = [],\n skipFilterAccountId = false\n }: AdministratorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(adm.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n buildSqlSelect(``, userPropLocationSqlSelect),\n buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"adm\", \"users\", \"usr\", [\"adm.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"creator\", [\"adm.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"updater\", [\"adm.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"adm\", \"user_status\", \"usrsta_isowner\", [\"adm.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"user_props\", \"usrprop_location\", [\"adm.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"group_owners\", \"grpown\", [\"adm.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(administratorDataTypes.administratorInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"adm.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n }\n\n if (datatypes.includes(administratorDataTypes.location)) {\n\n let locationSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelLocationFields.location_id}', location.location_id,\n '${ModelLocationFields.location_code}', location.location_code,\n '${ModelLocationFields.location_name}', location.location_name,\n '${ModelLocationFields.location_type}', location.location_type,\n '${ModelLocationFields.address_1}', location.address_1,\n '${ModelLocationFields.address_2}', location.address_2,\n '${ModelLocationFields.area_id}', location.area_id,\n '${ModelLocationFields.country_id}', location.country_id,\n '${ModelLocationFields.state_id}', location.state_id,\n '${ModelLocationFields.postcode}', location.postcode,\n '${ModelLocationFields.is_default}', location.is_default,\n '${ModelLocationFields.person_contact}', location.person_contact,\n '${ModelLocationFields.person_name}', location.person_contact,\n '${ModelLocationFields.person_email}', location.person_email,\n '${ModelLocationFields.isdelete}', location.isdelete,\n '${ModelLocationFields.istrash}', location.istrash\n )\n ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n '[]'\n )`]: \"locations\"\n }\n\n filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"adm.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n }\n\n if (datatypes.includes(administratorDataTypes.locationCount)) {\n\n let locationCountSqlSelect = {\n [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n }\n\n filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"adm.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"adm.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `adm.isdelete = false`,\n `adm.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: \"administrators\",\n mainAlias: \"adm\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId\n })\n\n data = await administratorModel.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 removeAdministrators = async ({ userIds }: AdministratorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await administratorModel.remove({\n where: {\n [`${ModelAdministratorFields.user_id}`]: {\n in: userIds\n },\n [`${ModelAdministratorFields.is_owner}`]: false // cannot default is_owner account\n }\n });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(administratorDataTypes);\n }\n\n return {\n createAdministrator,\n updateAdministrator,\n getAdministrator,\n listAdministrators,\n removeAdministrators,\n getDataTypes\n }\n\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorService.js","sourceRoot":"","sources":["../../../src/services/user/OperatorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n OperatorModel,\n ModelOperatorFields,\n // ModelGroupFields,\n // ModelUserStatusFields,\n // ModelUserPropFields,\n // ModelLocationFields\n} from \"@/models\";\n\n// import { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type UserType = \"operator\"\n\nexport const operatorDataTypes = {\n // location: \"location\",\n // locationCount: \"location_count\",\n // administratorInjectionFields: \"administrator_injection_fields\",\n}\n\nexport type OperatorDataType = keyof typeof operatorDataTypes;\n\nexport type OperatorServiceProps = DefaultServiceProps & {};\n\nexport type OperatorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorListProps = QueryList & {\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type OperatorCreateProps = {\n data:\n // operator\n {\n operator: {\n userId: number,\n }\n }\n}\n\nexport type OperatorUpdateProps = {\n userId: number,\n data:\n // operator\n {\n operator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: OperatorCreateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n [`${ModelOperatorFields.user_id}`]: data.operator.userId\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: OperatorUpdateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n // [`${ModelOperatorFields.user_id}`]: data.operator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`oper.${ModelOperatorFields.operator_id}`]: \"operator_id\",\n [`oper.${ModelOperatorFields.user_id}`]: \"user_id\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`usr.${ModelUserFields.contact}`]: \"contact\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`oper.${ModelOperatorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`oper.${ModelOperatorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`oper.${ModelOperatorFields.isdelete}`]: \"isdelete\",\n [`oper.${ModelOperatorFields.istrash}`]: \"istrash\",\n [`oper.${ModelOperatorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\n// let userPropLocationSqlSelect = {\n// // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n// ''\n// )`]: \"location_id\",\n// // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n// ''\n// )`]: \"location_name\",\n// }\n\n// let groupOwnerSqlSelect = {\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n// ''\n// )`]: \"access_group_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n// ''\n// )`]: \"access_group_label\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n// ''\n// )`]: \"access_group_description\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n// ''\n// )`]: \"access_group_type\"\n// // [`COALESCE(\n// // JSON_AGG(\n// // DISTINCT JSONB_BUILD_OBJECT(\n// // '${ModelGroupFields.group_label}', grp.group_label,\n// // '${ModelGroupFields.group_id}', grp.group_id,\n// // '${ModelGroupFields.group_type}', grp.group_type\n// // )\n// // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n// // '[]'\n// // )`]: \"grp\"\n// }\n\nexport const OperatorService = (props: OperatorServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const operatorModel = OperatorModel({ ...rest })\n\n // const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createOperator = async ({ data }: OperatorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.create({ data: _data })\n\n return response\n }\n\n const updateOperator = async ({ userId, data }: OperatorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.update({ where: { [`${ModelOperatorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getOperator = async ({ id, datatypes = [], includePassword = false }: OperatorGetProps) => {\n\n let { data } = await listOperators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelOperatorFields.user_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelOperatorFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listOperators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: OperatorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(oper.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n // buildSqlSelect(``, userPropLocationSqlSelect),\n // buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"oper\", \"users\", \"usr\", [\"oper.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"creator\", [\"oper.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"updater\", [\"oper.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_status\", \"usrsta_isowner\", [\"oper.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_props\", \"usrprop_location\", [\"oper.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"group_owners\", \"grpown\", [\"oper.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n // ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n // if (datatypes.includes(operatorDataTypes.administratorInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n // const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"oper.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n // }\n\n // if (datatypes.includes(operatorDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"oper.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(operatorDataTypes.locationCount)) {\n\n // let locationCountSqlSelect = {\n // [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"oper.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `oper.isdelete = false`,\n `oper.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: \"operators\",\n mainAlias: \"oper\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId: true\n })\n\n data = await operatorModel.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 removeOperators = async ({ userIds }: OperatorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await operatorModel.remove({ where: { [`${ModelOperatorFields.user_id}`]: { in: userIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(operatorDataTypes);\n }\n\n return {\n createOperator,\n updateOperator,\n getOperator,\n listOperators,\n removeOperators,\n getDataTypes\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"OperatorService.js","sourceRoot":"","sources":["../../../src/services/user/OperatorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n OperatorModel,\n ModelOperatorFields,\n} from \"@/models\";\n\n// import { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type UserType = \"operator\"\n\nexport const operatorDataTypes = {\n // location: \"location\",\n // locationCount: \"location_count\",\n // administratorInjectionFields: \"administrator_injection_fields\",\n}\n\nexport type OperatorDataType = keyof typeof operatorDataTypes;\n\nexport type OperatorServiceProps = DefaultServiceProps & {};\n\nexport type OperatorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorListProps = QueryList & {\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type OperatorCreateProps = {\n data:\n // operator\n {\n operator: {\n userId: number,\n }\n }\n}\n\nexport type OperatorUpdateProps = {\n userId: number,\n data:\n // operator\n {\n operator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: OperatorCreateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n [`${ModelOperatorFields.user_id}`]: data.operator.userId\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: OperatorUpdateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n // [`${ModelOperatorFields.user_id}`]: data.operator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`oper.${ModelOperatorFields.operator_id}`]: \"operator_id\",\n [`oper.${ModelOperatorFields.user_id}`]: \"user_id\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`usr.${ModelUserFields.contact}`]: \"contact\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`oper.${ModelOperatorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`oper.${ModelOperatorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`oper.${ModelOperatorFields.isdelete}`]: \"isdelete\",\n [`oper.${ModelOperatorFields.istrash}`]: \"istrash\",\n [`oper.${ModelOperatorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\n// let userPropLocationSqlSelect = {\n// // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n// ''\n// )`]: \"location_id\",\n// // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n// ''\n// )`]: \"location_name\",\n// }\n\n// let groupOwnerSqlSelect = {\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n// ''\n// )`]: \"access_group_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n// ''\n// )`]: \"access_group_label\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n// ''\n// )`]: \"access_group_description\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n// ''\n// )`]: \"access_group_type\"\n// // [`COALESCE(\n// // JSON_AGG(\n// // DISTINCT JSONB_BUILD_OBJECT(\n// // '${ModelGroupFields.group_label}', grp.group_label,\n// // '${ModelGroupFields.group_id}', grp.group_id,\n// // '${ModelGroupFields.group_type}', grp.group_type\n// // )\n// // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n// // '[]'\n// // )`]: \"grp\"\n// }\n\nexport const OperatorService = (props: OperatorServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const operatorModel = OperatorModel({ ...rest })\n\n // const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createOperator = async ({ data }: OperatorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.create({ data: _data })\n\n return response\n }\n\n const updateOperator = async ({ userId, data }: OperatorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.update({ where: { [`${ModelOperatorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getOperator = async ({ id, datatypes = [], includePassword = false }: OperatorGetProps) => {\n\n let { data } = await listOperators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelOperatorFields.user_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelOperatorFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listOperators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: OperatorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(oper.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n // buildSqlSelect(``, userPropLocationSqlSelect),\n // buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"oper\", \"users\", \"usr\", [\"oper.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"creator\", [\"oper.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"updater\", [\"oper.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_status\", \"usrsta_isowner\", [\"oper.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_props\", \"usrprop_location\", [\"oper.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"group_owners\", \"grpown\", [\"oper.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n // ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n // if (datatypes.includes(operatorDataTypes.administratorInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n // const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"oper.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n // }\n\n // if (datatypes.includes(operatorDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"oper.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(operatorDataTypes.locationCount)) {\n\n // let locationCountSqlSelect = {\n // [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"oper.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `oper.isdelete = false`,\n `oper.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: \"operators\",\n mainAlias: \"oper\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId: true\n })\n\n data = await operatorModel.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 removeOperators = async ({ userIds }: OperatorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await operatorModel.remove({ where: { [`${ModelOperatorFields.user_id}`]: { in: userIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(operatorDataTypes);\n }\n\n return {\n createOperator,\n updateOperator,\n getOperator,\n listOperators,\n removeOperators,\n getDataTypes\n }\n\n}\n\n"]}
@@ -77,7 +77,7 @@ const AccessKeyUtilService = (props) => {
77
77
  }],
78
78
  sortfield: `${models_1.ModelAccountFields.account_id}`,
79
79
  sortorder: "ASC",
80
- datatypes: []
80
+ datatypes: [],
81
81
  });
82
82
  // console.log('accounts', accounts)
83
83
  const account = accounts.length > 0 ? accounts[0] : {};
@@ -124,7 +124,7 @@ const AccessKeyUtilService = (props) => {
124
124
  sortorder: "ASC",
125
125
  datatypes: [],
126
126
  skipFilterAccountId: false,
127
- revealEncryption: false
127
+ revealEncryption: true
128
128
  });
129
129
  const accessKey = accessKeys.length > 0 ? accessKeys[0] : {};
130
130
  // console.log('accessKeys', accessKeys)
@@ -1 +1 @@
1
- {"version":3,"file":"AccessKeyUtilService.js","sourceRoot":"","sources":["../../../src/services/utils/AccessKeyUtilService.ts"],"names":[],"mappings":";;;AAEA,yDAAyD;AAEzD,oIAAoI;AAEpI,mCAA2F;AAC3F,qCAAoF;AACpF,yCAA6H;AAE7H,sCAAsC;AAEtC,6BAA6B;AAC7B,MAAM,UAAU,GAAG,IAAA,4BAAoB,GAAE,CAAA;AAkBlC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IAErE,MAAM,EACF,iBAAiB,GAAG,eAAe,EACnC,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,cAAc,GAAG,IAAA,uBAAc,EAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAClD,MAAM,gBAAgB,GAAG,IAAA,2BAAgB,EAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACzE,MAAM,cAAc,GAAG,IAAA,yBAAc,EAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAElD,MAAM,iBAAiB,GAAG,KAAK,EAAE,EAAE,IAAI,EAA8B,EAAE,EAAE;QAErE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAEhC,oCAAoC;QACpC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC;YACzC,KAAK,EAAE;gBACH,CAAC,GAAG,6BAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK;aAC5C;SACJ,CAAC,CAAA;QAEF,MAAM,wBAAwB,GAAG,WAAW,EAAE,oBAAoB,IAAI,EAAE,CAAA;QACxE,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;QAExC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,UAAU;QACV,MAAM,SAAS,GAAG,IAAA,8BAAsB,EAAC,aAAa,EAAE,wBAAwB,CAAC,CAAA;QAEjF,0BAA0B;QAC1B,MAAM,cAAc,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAEjF,yCAAyC;QAEzC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,wBAAwB;QACxB,IAAI,WAAW,EAAE,iBAAiB,KAAK,0BAAe,CAAC,MAAM,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,QAAQ,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAA;QAEtK,QAAQ,GAAG;YACP,GAAG,QAAQ;YACX,UAAU,EAAE,cAAc;SAC7B,CAAA;QAED,+CAA+C;QAC/C,OAAO,QAAQ,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAE1B,+EAA+E;QAC/E,MAAM,4BAA4B,GAAG,UAAU,CAAC,4BAA4B,CAAA;QAE5E,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,4BAA6B,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhF,CAAC,CAAA;IAED,mBAAmB;IACnB,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAAE,IAAI,EAAkC,EAAE,EAAE;QAEhF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;QAE1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;QAExC,mBAAmB;QACnB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC;YACzD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;oBACN,KAAK,EAAE,GAAG,2BAAkB,CAAC,YAAY,EAAE;oBAC3C,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,GAAG,WAAW,EAAE;iBAC1B,CAAC;YACF,SAAS,EAAE,GAAG,2BAAkB,CAAC,UAAU,EAAE;YAC7C,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,EAAE;SAChB,CAAC,CAAA;QAEF,oCAAoC;QAEpC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAEtD,MAAM,SAAS,GAAG,OAAO,EAAE,UAAU,IAAI,EAAE,CAAA;QAC3C,MAAM,kBAAkB,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAA;QAExD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,WAAW,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,MAAM,qBAAqB,GAAG,IAAA,2BAAgB,EAAC;YAC3C,GAAG,IAAI;YACP,SAAS;YACT,iBAAiB;SACpB,CAAC,CAAA;QAEF,qBAAqB;QACrB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC;YACpE,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE;gBACL;oBACI,KAAK,EAAE,GAAG,6BAAoB,CAAC,OAAO,EAAE;oBACxC,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,GAAG,kBAAkB,EAAE;iBACjC;gBACD;oBACI,KAAK,EAAE,GAAG,6BAAoB,CAAC,SAAS,EAAE;oBAC1C,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,GAAG,oBAAS,CAAC,aAAa,EAAE;iBACtC;gBACD;oBACI,KAAK,EAAE,GAAG,6BAAoB,CAAC,UAAU,EAAE;oBAC3C,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,IAAI;iBACd;gBACD;oBACI,KAAK,EAAE,GAAG,6BAAoB,CAAC,iBAAiB,EAAE;oBAClD,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE,0BAAe,CAAC,MAAM;iBAChC;aACJ;YACD,SAAS,EAAE,GAAG,6BAAoB,CAAC,aAAa,EAAE;YAClD,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,EAAE;YACb,mBAAmB,EAAE,KAAK;YAC1B,gBAAgB,EAAE,KAAK;SAC1B,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAE5D,wCAAwC;QAExC,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,IAAI,EAAE,CAAA;QACrC,MAAM,kBAAkB,GAAG,SAAS,EAAE,oBAAoB,IAAI,EAAE,CAAA;QAEhE,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAA,8BAAsB,EAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;QAE5E,wDAAwD;QAExD,MAAM,cAAc,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAEjF,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,CAAA;QAE5D,OAAO;YACH,GAAG,KAAK;YACR,UAAU,EAAE,cAAc;SAC7B,CAAA;QAED,+CAA+C;QAC/C,wIAAwI;IAC5I,CAAC,CAAA;IAED,OAAO;QACH,iBAAiB;QACjB,wBAAwB;KAC3B,CAAA;AAEL,CAAC,CAAA;AAzLY,QAAA,oBAAoB,wBAyLhC","sourcesContent":["import { DefaultServiceProps, throwError } from \"@/utils\";\n\n// import { QueryList, QueryGet } from \"@/schema/common\";\n\n// import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nimport { getCoreConfiguration, hashAccessKeySecret, decryptAccessKeySecret } from \"@/utils\"\nimport { AccessKeyModel, ModelAccessKeyFields, ModelAccountFields } from \"@/models\";\nimport { AccountService, AccessKeyService, accessKeyStatus, AccessKeyUserType, AccessKeyStatus, userTypes } from \"@/services\"\n\n// import { config } from \"@/configs\";\n\n// retrive core configuration\nconst coreConfig = getCoreConfiguration()\n\nexport type AccessKeyUtilServiceProps = DefaultServiceProps & {\n accessKeyUserType: AccessKeyUserType,\n};\n\nexport type AccessKeyUtilValidateProps = {\n data: {\n accessKey: string\n }\n}\n\nexport type AccessKeyUtilAccountOwnerProps = {\n data: {\n accountCode: string\n }\n}\n\nexport const AccessKeyUtilService = (props: AccessKeyUtilServiceProps) => {\n\n const {\n accessKeyUserType = \"administrator\",\n ...rest\n } = props\n\n const accessKeyModel = AccessKeyModel({ ...rest })\n const accessKeyService = AccessKeyService({ ...rest, accessKeyUserType })\n const accountService = AccountService({ ...rest })\n\n const validateAccessKey = async ({ data }: AccessKeyUtilValidateProps) => {\n\n const accessKey = data.accessKey\n\n // 1Split key into key_id and secret\n const [keyId, secret] = accessKey.split(\".\");\n\n if (!keyId || !secret) {\n throw new Error(`Invalid access key format: ${accessKey}`);\n }\n\n const findByKeyId = await accessKeyModel.get({\n where: {\n [`${ModelAccessKeyFields.key_id}`]: keyId\n }\n })\n\n const findByKeySecretEncrypted = findByKeyId?.key_secret_encrypted ?? \"\"\n const encryptionKey = getEncryptionKey()\n\n if (!findByKeyId?.access_key_id) {\n throw new Error(`Access key not exist: ${accessKey}`);\n }\n\n // decrytp\n const secreyKey = decryptAccessKeySecret(encryptionKey, findByKeySecretEncrypted)\n\n // construct the accessKey\n const savedAccessKey = accessKeyService.buildFormattedAccessKey(keyId, secreyKey)\n\n // console.log(savedAccessKey, accessKey)\n\n if (savedAccessKey !== accessKey) {\n throw new Error(`Invalid access key: ${accessKey}`);\n }\n\n // Check status / expiry\n if (findByKeyId?.access_key_status !== accessKeyStatus.active) {\n throw new Error(`Access key has been revoked: ${accessKey}`);\n }\n\n let response = await accessKeyService.getAccessKey({ id: Number(findByKeyId?.access_key_id ?? 0), datatypes: [], skipFilterAccountId: true, revealEncryption: false })\n\n response = {\n ...response,\n access_key: savedAccessKey\n }\n\n // Return user / account info (or just success)\n return response\n }\n\n const getEncryptionKey = () => {\n\n // const accessKeyEncryptionSecretKey = config.ACCESS_KEY_ENCRYPTION_SECRET_KEY\n const accessKeyEncryptionSecretKey = coreConfig.accessKeyEncryptionSecretKey\n\n if (!accessKeyEncryptionSecretKey) {\n throw new Error(`ACCESS_KEY_ENCRYPTION_SECRET_KEY is not set`);\n }\n\n return Buffer.from(accessKeyEncryptionSecretKey!, \"base64\").subarray(0, 32);\n\n }\n\n // admin owner user\n const getAccountOwnerAccessKey = async ({ data }: AccessKeyUtilAccountOwnerProps) => {\n\n const accountCode = data.accountCode ?? \"\"\n\n if (!accountCode) {\n throw new Error(`Account code is required`);\n }\n\n const encryptionKey = getEncryptionKey()\n\n // retrieve account\n const { data: accounts } = await accountService.listAccounts({\n limit: 1,\n offset: 0,\n filters: [{\n field: `${ModelAccountFields.account_code}`,\n operator: \"=\",\n value: `${accountCode}`\n }],\n sortfield: `${ModelAccountFields.account_id}`,\n sortorder: \"ASC\",\n datatypes: []\n })\n\n // console.log('accounts', accounts)\n\n const account = accounts.length > 0 ? accounts[0] : {}\n\n const accountId = account?.account_id ?? \"\"\n const accountOwnerUserId = account?.owner?.user_id ?? \"\"\n\n if (!accountId) {\n throw new Error(`Invalid account code: ${accountCode}`);\n }\n\n if (!accountOwnerUserId) {\n throw new Error(`Cannot find account owner administrator userId: ${accountCode}`);\n }\n\n const queryAccessKeyService = AccessKeyService({\n ...rest,\n accountId,\n accessKeyUserType\n })\n\n // retrive access key\n const { data: accessKeys } = await queryAccessKeyService.listAccessKeys({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelAccessKeyFields.user_id}`,\n operator: \"=\",\n value: `${accountOwnerUserId}`\n },\n {\n field: `${ModelAccessKeyFields.user_type}`,\n operator: \"=\",\n value: `${userTypes.administrator}`\n },\n {\n field: `${ModelAccessKeyFields.is_default}`,\n operator: \"=\",\n value: true\n },\n {\n field: `${ModelAccessKeyFields.access_key_status}`,\n operator: \"=\",\n value: accessKeyStatus.active\n }\n ],\n sortfield: `${ModelAccessKeyFields.access_key_id}`,\n sortorder: \"ASC\",\n datatypes: [],\n skipFilterAccountId: false,\n revealEncryption: false\n })\n\n const accessKey = accessKeys.length > 0 ? accessKeys[0] : {}\n\n // console.log('accessKeys', accessKeys)\n\n const keyId = accessKey?.key_id ?? \"\"\n const keySecretEncrypted = accessKey?.key_secret_encrypted ?? \"\"\n\n // Decrypt the secret\n const keySecret = decryptAccessKeySecret(encryptionKey, keySecretEncrypted);\n\n // const keySecretHash = hashAccessKeySecret(keySecret);\n\n const validAccessKey = accessKeyService.buildFormattedAccessKey(keyId, keySecret)\n\n const { key_secret_encrypted, key_id, ...other } = accessKey\n\n return {\n ...other,\n access_key: validAccessKey\n }\n\n // Return user / account info (or just success)\n // return await accessKeyService.getAccessKey({ id: Number(findByKeyId?.access_key_id ?? 0), datatypes: [], skipFilterAccountId: true })\n }\n\n return {\n validateAccessKey,\n getAccountOwnerAccessKey\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"AccessKeyUtilService.js","sourceRoot":"","sources":["../../../src/services/utils/AccessKeyUtilService.ts"],"names":[],"mappings":"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","sourcesContent":["import { DefaultServiceProps, throwError } from \"@/utils\";\n\n// import { QueryList, QueryGet } from \"@/schema/common\";\n\n// import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nimport { getCoreConfiguration, hashAccessKeySecret, decryptAccessKeySecret } from \"@/utils\"\nimport { AccessKeyModel, ModelAccessKeyFields, ModelAccountFields } from \"@/models\";\nimport { AccountService, AccessKeyService, accessKeyStatus, AccessKeyUserType, AccessKeyStatus, userTypes } from \"@/services\"\n\n// import { config } from \"@/configs\";\n\n// retrive core configuration\nconst coreConfig = getCoreConfiguration()\n\nexport type AccessKeyUtilServiceProps = DefaultServiceProps & {\n accessKeyUserType: AccessKeyUserType,\n};\n\nexport type AccessKeyUtilValidateProps = {\n data: {\n accessKey: string\n }\n}\n\nexport type AccessKeyUtilAccountOwnerProps = {\n data: {\n accountCode: string\n }\n}\n\nexport const AccessKeyUtilService = (props: AccessKeyUtilServiceProps) => {\n\n const {\n accessKeyUserType = \"administrator\",\n ...rest\n } = props\n\n const accessKeyModel = AccessKeyModel({ ...rest })\n const accessKeyService = AccessKeyService({ ...rest, accessKeyUserType })\n const accountService = AccountService({ ...rest })\n\n const validateAccessKey = async ({ data }: AccessKeyUtilValidateProps) => {\n\n const accessKey = data.accessKey\n\n // 1Split key into key_id and secret\n const [keyId, secret] = accessKey.split(\".\");\n\n if (!keyId || !secret) {\n throw new Error(`Invalid access key format: ${accessKey}`);\n }\n\n const findByKeyId = await accessKeyModel.get({\n where: {\n [`${ModelAccessKeyFields.key_id}`]: keyId\n }\n })\n\n const findByKeySecretEncrypted = findByKeyId?.key_secret_encrypted ?? \"\"\n const encryptionKey = getEncryptionKey()\n\n if (!findByKeyId?.access_key_id) {\n throw new Error(`Access key not exist: ${accessKey}`);\n }\n\n // decrytp\n const secreyKey = decryptAccessKeySecret(encryptionKey, findByKeySecretEncrypted)\n\n // construct the accessKey\n const savedAccessKey = accessKeyService.buildFormattedAccessKey(keyId, secreyKey)\n\n // console.log(savedAccessKey, accessKey)\n\n if (savedAccessKey !== accessKey) {\n throw new Error(`Invalid access key: ${accessKey}`);\n }\n\n // Check status / expiry\n if (findByKeyId?.access_key_status !== accessKeyStatus.active) {\n throw new Error(`Access key has been revoked: ${accessKey}`);\n }\n\n let response = await accessKeyService.getAccessKey({ id: Number(findByKeyId?.access_key_id ?? 0), datatypes: [], skipFilterAccountId: true, revealEncryption: false })\n\n response = {\n ...response,\n access_key: savedAccessKey\n }\n\n // Return user / account info (or just success)\n return response\n }\n\n const getEncryptionKey = () => {\n\n // const accessKeyEncryptionSecretKey = config.ACCESS_KEY_ENCRYPTION_SECRET_KEY\n const accessKeyEncryptionSecretKey = coreConfig.accessKeyEncryptionSecretKey\n\n if (!accessKeyEncryptionSecretKey) {\n throw new Error(`ACCESS_KEY_ENCRYPTION_SECRET_KEY is not set`);\n }\n\n return Buffer.from(accessKeyEncryptionSecretKey!, \"base64\").subarray(0, 32);\n\n }\n\n // admin owner user\n const getAccountOwnerAccessKey = async ({ data }: AccessKeyUtilAccountOwnerProps) => {\n\n const accountCode = data.accountCode ?? \"\"\n\n if (!accountCode) {\n throw new Error(`Account code is required`);\n }\n\n const encryptionKey = getEncryptionKey()\n\n // retrieve account\n const { data: accounts } = await accountService.listAccounts({\n limit: 1,\n offset: 0,\n filters: [{\n field: `${ModelAccountFields.account_code}`,\n operator: \"=\",\n value: `${accountCode}`\n }],\n sortfield: `${ModelAccountFields.account_id}`,\n sortorder: \"ASC\",\n datatypes: [],\n })\n\n // console.log('accounts', accounts)\n\n const account = accounts.length > 0 ? accounts[0] : {}\n\n const accountId = account?.account_id ?? \"\"\n const accountOwnerUserId = account?.owner?.user_id ?? \"\"\n\n if (!accountId) {\n throw new Error(`Invalid account code: ${accountCode}`);\n }\n\n if (!accountOwnerUserId) {\n throw new Error(`Cannot find account owner administrator userId: ${accountCode}`);\n }\n\n const queryAccessKeyService = AccessKeyService({\n ...rest,\n accountId,\n accessKeyUserType\n })\n\n // retrive access key\n const { data: accessKeys } = await queryAccessKeyService.listAccessKeys({\n limit: 1,\n offset: 0,\n filters: [\n {\n field: `${ModelAccessKeyFields.user_id}`,\n operator: \"=\",\n value: `${accountOwnerUserId}`\n },\n {\n field: `${ModelAccessKeyFields.user_type}`,\n operator: \"=\",\n value: `${userTypes.administrator}`\n },\n {\n field: `${ModelAccessKeyFields.is_default}`,\n operator: \"=\",\n value: true\n },\n {\n field: `${ModelAccessKeyFields.access_key_status}`,\n operator: \"=\",\n value: accessKeyStatus.active\n }\n ],\n sortfield: `${ModelAccessKeyFields.access_key_id}`,\n sortorder: \"ASC\",\n datatypes: [],\n skipFilterAccountId: false,\n revealEncryption: true\n })\n\n const accessKey = accessKeys.length > 0 ? accessKeys[0] : {}\n\n // console.log('accessKeys', accessKeys)\n\n const keyId = accessKey?.key_id ?? \"\"\n const keySecretEncrypted = accessKey?.key_secret_encrypted ?? \"\"\n\n // Decrypt the secret\n const keySecret = decryptAccessKeySecret(encryptionKey, keySecretEncrypted);\n\n // const keySecretHash = hashAccessKeySecret(keySecret);\n\n const validAccessKey = accessKeyService.buildFormattedAccessKey(keyId, keySecret)\n\n const { key_secret_encrypted, key_id, ...other } = accessKey\n\n return {\n ...other,\n access_key: validAccessKey\n }\n\n // Return user / account info (or just success)\n // return await accessKeyService.getAccessKey({ id: Number(findByKeyId?.access_key_id ?? 0), datatypes: [], skipFilterAccountId: true })\n }\n\n return {\n validateAccessKey,\n getAccountOwnerAccessKey\n }\n\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storemw-core-api",
3
- "version": "1.0.96",
3
+ "version": "1.0.97",
4
4
  "description": "STOREMW Core API",
5
5
  "main": "dist/app.js",
6
6
  "types": "dist/app.d.ts",