💡 create documentation for main find user service
This commit is contained in:
@ -7,26 +7,32 @@ import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
|||||||
|
|
||||||
export const findUserService = async (payload: getUserDataService) => {
|
export const findUserService = async (payload: getUserDataService) => {
|
||||||
try {
|
try {
|
||||||
|
// Define query target with the related repository
|
||||||
const repositoryMap = {
|
const repositoryMap = {
|
||||||
id: findUserByIdRepository,
|
id: findUserByIdRepository,
|
||||||
email: findUserByEmailRepository,
|
email: findUserByEmailRepository,
|
||||||
username: findUserByUsernameRepository,
|
username: findUserByUsernameRepository,
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
|
// Check if the repository is available for the target query, if not return an error
|
||||||
const repoFn = repositoryMap[payload.queryTarget];
|
const repoFn = repositoryMap[payload.queryTarget];
|
||||||
if (!repoFn) throw new AppError(502, "Repository handler not found");
|
if (!repoFn) throw new AppError(503, "Repository handler not found");
|
||||||
|
|
||||||
|
// Retrieving user data using the associated repository, if user not found return 404 response
|
||||||
const userData = await repoFn(payload.identifier);
|
const userData = await repoFn(payload.identifier);
|
||||||
|
if (!userData) throw new AppError(404, "User not found");
|
||||||
|
|
||||||
|
// Define verbosity levels
|
||||||
const existsVerbosity = ["exists"].includes(payload.options.verbosity);
|
const existsVerbosity = ["exists"].includes(payload.options.verbosity);
|
||||||
const fullVerbosity = ["full"].includes(payload.options.verbosity);
|
const fullVerbosity = ["full"].includes(payload.options.verbosity);
|
||||||
const basicVerbosity = ["basic", "full"].includes(
|
const basicVerbosity = ["basic", "full"].includes(
|
||||||
payload.options.verbosity
|
payload.options.verbosity
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!userData) throw new AppError(404, "User not found");
|
// If verbosity in 'exists' level and user is valid then just return 'true' value
|
||||||
if (existsVerbosity) return true;
|
if (existsVerbosity) return true;
|
||||||
|
|
||||||
|
// Construct response payload by adjusting the verbosity level
|
||||||
const response = {
|
const response = {
|
||||||
...(fullVerbosity && { id: userData?.id }),
|
...(fullVerbosity && { id: userData?.id }),
|
||||||
...(basicVerbosity && { name: userData?.name }),
|
...(basicVerbosity && { name: userData?.name }),
|
||||||
@ -46,7 +52,6 @@ export const findUserService = async (payload: getUserDataService) => {
|
|||||||
...(fullVerbosity && { createdAt: userData?.createdAt }),
|
...(fullVerbosity && { createdAt: userData?.createdAt }),
|
||||||
...(fullVerbosity && { updatedAt: userData?.updatedAt }),
|
...(fullVerbosity && { updatedAt: userData?.updatedAt }),
|
||||||
};
|
};
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ErrorForwarder(error);
|
ErrorForwarder(error);
|
||||||
|
|||||||
Reference in New Issue
Block a user