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( serviceMethod: () => Promise>, res: Response ): Promise { 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 }, ]); } } }