♻️ refactoring find user service
This commit is contained in:
@ -1,23 +1,23 @@
|
|||||||
import { User } from "@prisma/client";
|
|
||||||
import { findUserByEmailRepository } from "../../repositories/read/findUserByEmail.repository";
|
import { findUserByEmailRepository } from "../../repositories/read/findUserByEmail.repository";
|
||||||
import { getUserDataService } from "../../user.types";
|
import { getUserDataService } from "../../user.types";
|
||||||
import { AppError } from "../../../../helpers/error/instances/app";
|
import { AppError } from "../../../../helpers/error/instances/app";
|
||||||
import { findUserByIdRepository } from "../../repositories/read/findUserById.repository";
|
import { findUserByIdRepository } from "../../repositories/read/findUserById.repository";
|
||||||
import { findUserByUsernameRepository } from "../../repositories/read/findUserByUsername.repository";
|
import { findUserByUsernameRepository } from "../../repositories/read/findUserByUsername.repository";
|
||||||
|
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
||||||
|
|
||||||
export const findUserService = async (payload: getUserDataService) => {
|
export const findUserService = async (payload: getUserDataService) => {
|
||||||
let userData: User | null = null;
|
try {
|
||||||
if (payload.queryTarget === "email") {
|
const repositoryMap = {
|
||||||
userData = await findUserByEmailRepository(payload.identifier);
|
id: findUserByIdRepository,
|
||||||
}
|
email: findUserByEmailRepository,
|
||||||
if (payload.queryTarget === "id") {
|
username: findUserByUsernameRepository,
|
||||||
userData = await findUserByIdRepository(payload.identifier);
|
} as const;
|
||||||
}
|
|
||||||
if (payload.queryTarget === "username") {
|
|
||||||
userData = await findUserByUsernameRepository(payload.identifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
export interface getUserDataService {
|
export interface getUserDataService {
|
||||||
identifier: string;
|
identifier: string;
|
||||||
queryTarget: "id" | "email" | "username" | "email_username";
|
queryTarget: "id" | "email" | "username";
|
||||||
options: getUserDataOptions;
|
options: getUserDataOptions;
|
||||||
}
|
}
|
||||||
export interface getUserDataOptions {
|
export interface getUserDataOptions {
|
||||||
|
|||||||
Reference in New Issue
Block a user