File size: 941 Bytes
2c16c8c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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 },
]);
}
}
}
|