From b5c4fc56a059161f36dbb0432ce98dd9051d1dbb Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Fri, 18 Jul 2025 22:09:46 +0700 Subject: [PATCH] :recycle: refactoring find user service --- .../services/internal/findUser.service.ts | 26 +++++++++---------- src/modules/user/user.types.ts | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/modules/user/services/internal/findUser.service.ts b/src/modules/user/services/internal/findUser.service.ts index 09995b0..6b4611c 100644 --- a/src/modules/user/services/internal/findUser.service.ts +++ b/src/modules/user/services/internal/findUser.service.ts @@ -1,23 +1,23 @@ -import { User } from "@prisma/client"; import { findUserByEmailRepository } from "../../repositories/read/findUserByEmail.repository"; import { getUserDataService } from "../../user.types"; import { AppError } from "../../../../helpers/error/instances/app"; import { findUserByIdRepository } from "../../repositories/read/findUserById.repository"; import { findUserByUsernameRepository } from "../../repositories/read/findUserByUsername.repository"; +import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder"; export const findUserService = async (payload: getUserDataService) => { - let userData: User | null = null; - if (payload.queryTarget === "email") { - userData = await findUserByEmailRepository(payload.identifier); - } - if (payload.queryTarget === "id") { - userData = await findUserByIdRepository(payload.identifier); - } - if (payload.queryTarget === "username") { - userData = await findUserByUsernameRepository(payload.identifier); - } + try { + const repositoryMap = { + id: findUserByIdRepository, + email: findUserByEmailRepository, + username: findUserByUsernameRepository, + } as const; - if (userData === null) throw new AppError(404, "User not found"); + const repoFn = repositoryMap[payload.queryTarget]; + if (!repoFn) throw new AppError(502, "Repository handler not found"); - return userData; + return await repoFn(payload.identifier); + } catch (error) { + ErrorForwarder(error); + } }; diff --git a/src/modules/user/user.types.ts b/src/modules/user/user.types.ts index f559eea..4bcff91 100644 --- a/src/modules/user/user.types.ts +++ b/src/modules/user/user.types.ts @@ -1,6 +1,6 @@ export interface getUserDataService { identifier: string; - queryTarget: "id" | "email" | "username" | "email_username"; + queryTarget: "id" | "email" | "username"; options: getUserDataOptions; } export interface getUserDataOptions {