diff --git a/src/modules/user/services/internal/findUser.service.ts b/src/modules/user/services/internal/findUser.service.ts index 6b4611c..38e49a0 100644 --- a/src/modules/user/services/internal/findUser.service.ts +++ b/src/modules/user/services/internal/findUser.service.ts @@ -16,7 +16,38 @@ export const findUserService = async (payload: getUserDataService) => { const repoFn = repositoryMap[payload.queryTarget]; if (!repoFn) throw new AppError(502, "Repository handler not found"); - return await repoFn(payload.identifier); + const userData = await repoFn(payload.identifier); + + const existsVerbosity = ["exists"].includes(payload.options.verbosity); + const fullVerbosity = ["full"].includes(payload.options.verbosity); + const basicVerbosity = ["basic", "full"].includes( + payload.options.verbosity + ); + + if (!userData) throw new AppError(404, "User not found"); + if (existsVerbosity) return true; + + const response = { + ...(fullVerbosity && { id: userData?.id }), + ...(basicVerbosity && { name: userData?.name }), + ...(basicVerbosity && { username: userData?.username }), + ...(fullVerbosity && { email: userData?.email }), + ...(fullVerbosity && { password: userData?.password }), + ...(fullVerbosity && { birthDate: userData?.birthDate }), + ...(fullVerbosity && { gender: userData?.gender }), + ...(fullVerbosity && { phoneCC: userData?.phoneCC }), + ...(fullVerbosity && { phoneNumber: userData?.phoneNumber }), + ...(basicVerbosity && { bioProfile: userData?.bioProfile }), + ...(basicVerbosity && { avatar: userData?.avatar }), + ...(basicVerbosity && { commentBackground: userData?.commentBackground }), + ...(fullVerbosity && { verifiedAt: userData?.verifiedAt }), + ...(fullVerbosity && { disabledAt: userData?.disabledAt }), + ...(fullVerbosity && { deletedAt: userData?.deletedAt }), + ...(fullVerbosity && { createdAt: userData?.createdAt }), + ...(fullVerbosity && { updatedAt: userData?.updatedAt }), + }; + + return response; } catch (error) { ErrorForwarder(error); }