add proxy routes/controller
This commit is contained in:
1 parent
54690fc73c
commit
1b2d2887af
4 files changed
+97
No files matched your search
@@ -0,0 +1,79 @@
|
||||
import { Request, Response, RequestHandler } from "express";
|
||||
import { catchAsync } from "@/utils/catchAsync.js";
|
||||
import { IProxiesService } from "@/domain/proxies/proxy.service.js";
|
||||
import { requireTeamId } from "./controllerUtils.js";
|
||||
import {
|
||||
createProxyBodyValidation,
|
||||
editProxyBodyValidation,
|
||||
getProxyByIdParamValidation,
|
||||
editProxyParamValidation,
|
||||
deleteProxyParamValidation,
|
||||
} from "@/api/validation/index.js";
|
||||
|
||||
export interface IProxiesController {
|
||||
createProxy: RequestHandler;
|
||||
getProxyById: RequestHandler;
|
||||
getProxiesByTeamId: RequestHandler;
|
||||
editProxy: RequestHandler;
|
||||
deleteProxy: RequestHandler;
|
||||
}
|
||||
|
||||
class ProxyController implements IProxiesController {
|
||||
constructor(private proxiesService: IProxiesService) {}
|
||||
|
||||
createProxy = catchAsync(async (req: Request, res: Response) => {
|
||||
const validatedBody = createProxyBodyValidation.parse(req.body);
|
||||
const teamId = requireTeamId(req.user?.teamId);
|
||||
|
||||
const proxy = await this.proxiesService.createProxy(validatedBody, teamId);
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
msg: "Proxy created successfully",
|
||||
data: proxy,
|
||||
});
|
||||
});
|
||||
getProxyById = catchAsync(async (req: Request, res: Response) => {
|
||||
const teamId = requireTeamId(req.user?.teamId);
|
||||
const { id: proxyId } = getProxyByIdParamValidation.parse(req.params);
|
||||
const proxy = await this.proxiesService.getProxy(proxyId, teamId);
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
msg: "Proxy retrieved successfully",
|
||||
data: proxy,
|
||||
});
|
||||
});
|
||||
|
||||
getProxiesByTeamId = catchAsync(async (req: Request, res: Response) => {
|
||||
const teamId = requireTeamId(req.user?.teamId);
|
||||
const proxies = await this.proxiesService.getProxiesByTeamId(teamId);
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
msg: "Proxies retrieved successfully",
|
||||
data: proxies,
|
||||
});
|
||||
});
|
||||
|
||||
editProxy = catchAsync(async (req: Request, res: Response) => {
|
||||
const teamId = requireTeamId(req.user?.teamId);
|
||||
const { id: proxyId } = editProxyParamValidation.parse(req.params);
|
||||
const validatedBody = editProxyBodyValidation.parse(req.body);
|
||||
const updatedProxy = await this.proxiesService.updateProxy(proxyId, teamId, validatedBody);
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
msg: "Proxy updated successfully",
|
||||
data: updatedProxy,
|
||||
});
|
||||
});
|
||||
|
||||
deleteProxy = catchAsync(async (req: Request, res: Response) => {
|
||||
const teamId = requireTeamId(req.user?.teamId);
|
||||
const { id: proxyId } = deleteProxyParamValidation.parse(req.params);
|
||||
await this.proxiesService.deleteProxy(proxyId, teamId);
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
msg: "Proxy deleted successfully",
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default ProxyController;
|
||||
@@ -0,0 +1,12 @@
|
||||
import { IProxiesController } from "@/api/controllers/proxyController.js";
|
||||
import { Router } from "express";
|
||||
|
||||
export const createProxyRoutes = (tagController: IProxiesController): Router => {
|
||||
const router = Router();
|
||||
router.post("/", tagController.createProxy);
|
||||
router.get("/team", tagController.getProxiesByTeamId);
|
||||
router.get("/:id", tagController.getProxyById);
|
||||
router.delete("/:id", tagController.deleteProxy);
|
||||
router.patch("/:id", tagController.editProxy);
|
||||
return router;
|
||||
};
|
||||
@@ -12,6 +12,7 @@ import NotificationController from "../api/controllers/notificationController.js
|
||||
import TagsController from "../api/controllers/tagController.js";
|
||||
import DiagnosticController from "../api/controllers/diagnosticController.js";
|
||||
import IncidentController from "../api/controllers/incidentController.js";
|
||||
import ProxyController from "@/api/controllers/proxyController.js";
|
||||
import { ApiServices } from "@/config/services.api.js";
|
||||
|
||||
export interface InitializedControllers {
|
||||
@@ -29,6 +30,7 @@ export interface InitializedControllers {
|
||||
tagController: TagsController;
|
||||
diagnosticController: DiagnosticController;
|
||||
incidentController: IncidentController;
|
||||
proxyController: ProxyController;
|
||||
}
|
||||
export const initializeControllers = (apiServices: ApiServices): InitializedControllers => {
|
||||
return {
|
||||
@@ -46,5 +48,6 @@ export const initializeControllers = (apiServices: ApiServices): InitializedCont
|
||||
tagController: new TagsController(apiServices.tagsService),
|
||||
diagnosticController: new DiagnosticController(apiServices.diagnosticService),
|
||||
incidentController: new IncidentController(apiServices.incidentService),
|
||||
proxyController: new ProxyController(apiServices.proxiesService),
|
||||
};
|
||||
};
|
||||
@@ -19,6 +19,7 @@ import { createDiagnosticRoutes } from "@/api/routes/diagnosticRoutes.js";
|
||||
import { createNotificationRoutes } from "@/api/routes/notificationRoutes.js";
|
||||
import { createTagRoutes } from "@/api/routes/tagRoutes.js";
|
||||
import { createIncidentRoutes } from "@/api/routes/incidentRoutes.js";
|
||||
import { createProxyRoutes } from "@/api/routes/proxyRoutes.js";
|
||||
|
||||
export const setupRoutes = (app: Application, controllers: InitializedControllers, apiServices: ApiServices) => {
|
||||
const verifyJWT = createVerifyJWT(apiServices.settingsService);
|
||||
@@ -37,6 +38,7 @@ export const setupRoutes = (app: Application, controllers: InitializedController
|
||||
const tagRoutes = createTagRoutes(controllers.tagController);
|
||||
const diagnosticRoutes = createDiagnosticRoutes(controllers.diagnosticController, verifyJWT);
|
||||
const incidentRoutes = createIncidentRoutes(controllers.incidentController);
|
||||
const proxyRoutes = createProxyRoutes(controllers.proxyController);
|
||||
|
||||
app.use("/api/v1/auth", authApiLimiter, authRoutes);
|
||||
app.use("/api/v1/monitors", verifyJWT, monitorRoutes);
|
||||
@@ -52,4 +54,5 @@ export const setupRoutes = (app: Application, controllers: InitializedController
|
||||
app.use("/api/v1/tags", verifyJWT, tagRoutes);
|
||||
app.use("/api/v1/diagnostic", verifyJWT, diagnosticRoutes);
|
||||
app.use("/api/v1/incidents", verifyJWT, incidentRoutes);
|
||||
app.use("/api/v1/proxies", verifyJWT, proxyRoutes);
|
||||
};
|
||||
Reference in new issue
Block a user