From 83f30bd36c963a12de1e008ab8a57309ef8951c4 Mon Sep 17 00:00:00 2001 From: rafiarrafif Date: Sat, 10 May 2025 01:00:00 +0700 Subject: [PATCH] add 1 step find user --- .../loginWithPassword.controller.ts | 8 +++-- .../services/loginWithPassword.service.ts | 10 ++++-- .../findUserByEmailOrUsername.repository.ts | 35 +++++++++++++++++++ .../findUserByEmailOrUsername.service.ts | 10 ++++++ src/modules/user/user.repository.ts | 0 5 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/modules/user/repositories/findUserByEmailOrUsername.repository.ts create mode 100644 src/modules/user/services/findUserByEmailOrUsername.service.ts delete mode 100644 src/modules/user/user.repository.ts diff --git a/src/modules/auth/controller/loginWithPassword.controller.ts b/src/modules/auth/controller/loginWithPassword.controller.ts index bd748e5..595947b 100644 --- a/src/modules/auth/controller/loginWithPassword.controller.ts +++ b/src/modules/auth/controller/loginWithPassword.controller.ts @@ -11,6 +11,10 @@ export const loginWithPassword = async ( if (error || !ctx.body) return returnErrorResponse(ctx.set, 400, "Invalid user input", error); - const result = await loginWithPasswordService(ctx.body); - return result; + try { + const result = await loginWithPasswordService(ctx.body); + return result; + } catch (error) { + return error; + } }; diff --git a/src/modules/auth/services/loginWithPassword.service.ts b/src/modules/auth/services/loginWithPassword.service.ts index 9e7e9ed..9cd0f86 100644 --- a/src/modules/auth/services/loginWithPassword.service.ts +++ b/src/modules/auth/services/loginWithPassword.service.ts @@ -1,9 +1,13 @@ +import { findUserByEmailOrUsernameService } from "../../user/services/findUserByEmailOrUsername.service"; import { LoginWithPasswordRequest } from "../auth.types"; export const loginWithPasswordService = async ( data: LoginWithPasswordRequest ) => { - return `Login with password service called with data: ${JSON.stringify( - data - )}`; + try { + const userData = await findUserByEmailOrUsernameService(data.identifier); + return userData; + } catch (error) { + throw error; + } }; diff --git a/src/modules/user/repositories/findUserByEmailOrUsername.repository.ts b/src/modules/user/repositories/findUserByEmailOrUsername.repository.ts new file mode 100644 index 0000000..66fb782 --- /dev/null +++ b/src/modules/user/repositories/findUserByEmailOrUsername.repository.ts @@ -0,0 +1,35 @@ +import { userModel } from "../user.model"; + +export const findUserByEmailOrUsernameRepo = async (identifier: string) => { + const userData = + (await userModel.findUnique({ + where: { email: identifier }, + include: { + roles: { + omit: { + createdBy: true, + createdAt: true, + updatedAt: true, + deletedAt: true, + }, + }, + }, + })) || + (await userModel.findUnique({ + where: { username: identifier }, + include: { + roles: { + omit: { + createdBy: true, + createdAt: true, + updatedAt: true, + deletedAt: true, + }, + }, + }, + })); + + if (!userData) throw "User not found"; + + return userData; +}; diff --git a/src/modules/user/services/findUserByEmailOrUsername.service.ts b/src/modules/user/services/findUserByEmailOrUsername.service.ts new file mode 100644 index 0000000..06d977d --- /dev/null +++ b/src/modules/user/services/findUserByEmailOrUsername.service.ts @@ -0,0 +1,10 @@ +import { findUserByEmailOrUsernameRepo } from "../repositories/findUserByEmailOrUsername.repository"; + +export const findUserByEmailOrUsernameService = async (identifier: string) => { + try { + const userData = await findUserByEmailOrUsernameRepo(identifier); + return userData; + } catch (error) { + throw error; + } +}; diff --git a/src/modules/user/user.repository.ts b/src/modules/user/user.repository.ts deleted file mode 100644 index e69de29..0000000