| import { Response } from "express"; | |
| import { ApiResponseType } from "./api-response"; | |
| import { logger } from "../logger/logger"; | |
| import { HttpStatusCode } from "./status-code"; | |
| export class RequestHandler { | |
| static async handle<T>( | |
| serviceMethod: () => Promise<ApiResponseType<T>>, | |
| res: Response | |
| ): Promise<void> { | |
| try { | |
| const result = await serviceMethod(); | |
| if (result.success) { | |
| return res.success(result.data, result.message); | |
| } | |
| return res.error( | |
| result.statusCode || HttpStatusCode.INTERNAL_SERVER_ERROR, | |
| result.errorCode || "INTERNAL_SERVER_ERROR", | |
| result.message, | |
| result.errors | |
| ); | |
| } catch (error) { | |
| logger.error(error); | |
| return res.error(HttpStatusCode.INTERNAL_SERVER_ERROR, "UNEXPECTED_ERROR", "An unexpected error occurred", [ | |
| { message: (error as Error).message }, | |
| ]); | |
| } | |
| } | |
| } | |