import { validateRequestDTO } from "@common/presentation"; import { ICreateAcccountResponseDTOSchema, IGetAcccountResponseDTOSchema, IUpdateAcccountResponseDTOSchema, ListAccountsSchema, } from "@contexts/accounts/presentation"; import { createAccountController, getAccountController, listAccountsController, updateAccountController, } from "@contexts/accounts/presentation/controllers"; import { checkTabContext } from "@contexts/auth/infraestructure"; import { NextFunction, Request, Response, Router } from "express"; export const accountsRouter = (appRouter: Router) => { const routes: Router = Router({ mergeParams: true }); routes.get( "/", validateRequestDTO(ListAccountsSchema), checkTabContext, //checkUser, (req: Request, res: Response, next: NextFunction) => { listAccountsController().execute(req, res, next); } ); routes.get( "/:accountId", validateRequestDTO(IGetAcccountResponseDTOSchema), checkTabContext, //checkUser, (req: Request, res: Response, next: NextFunction) => { getAccountController().execute(req, res, next); } ); routes.post( "/", validateRequestDTO(ICreateAcccountResponseDTOSchema), checkTabContext, //checkUser, (req: Request, res: Response, next: NextFunction) => { createAccountController().execute(req, res, next); } ); routes.put( "/:accountId", validateRequestDTO(IUpdateAcccountResponseDTOSchema), checkTabContext, //checkUser, (req: Request, res: Response, next: NextFunction) => { updateAccountController().execute(req, res, next); } ); appRouter.use("/accounts", routes); };