2023-05-16 15:03:31 +02:00

46 lines
1.8 KiB
TypeScript

import { StRoute } from "./StRoute";
import { Response } from "express";
import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
type IResponseData = {} | string | number | boolean | null | unknown;
export default abstract class BaseController {
public expressRoutes!: StRoute[];
public httpCode: typeof HttpCodes = HttpCodes;
protected httpSuccess(response: Response, responseData: IResponseData = null) {
return this.httpResponse(response, HttpCodes.SUCCESS, responseData);
}
protected httpCreated(response: Response, responseData: IResponseData = null) {
return this.httpResponse(response, HttpCodes.CREATED, responseData);
}
protected httpBadRequest(response: Response, responseData: IResponseData = "Http Bad Request") {
return this.httpResponse(response, HttpCodes.BAD_REQUEST, responseData);
}
protected httpValidationError(response: Response, responseData: IResponseData = "Http Validation Error") {
return this.httpResponse(response, HttpCodes.VALIDATION_ERROR, responseData);
}
protected httpNotFoundRequest(response: Response, responseData: IResponseData = "Not Found") {
return this.httpResponse(response, HttpCodes.NOT_FOUND, responseData);
}
protected httpInternalError(response: Response, responseData: IResponseData = "http Internal Server Error") {
return this.httpResponse(response, HttpCodes.INTERNAL_ERROR, responseData);
}
protected httpNotImplemented(response: Response, responseData: IResponseData = "Not implemented") {
return this.httpResponse(response, HttpCodes.NOT_IMPLEMENTED, responseData);
}
protected httpResponse(response: Response, httpCode: HttpCodes, responseData: IResponseData = {}) {
if (responseData instanceof Error) {
throw responseData;
}
return response.status(httpCode).send(responseData);
}
}