import Express from "express"; import { createContextMiddleware } from "./context.middleware"; import { DealerRouter, authRouter, catalogRouter, profileRouter, quoteRoutes, usersRouter, } from "./routes"; export const v1Routes = () => { const routes = Express.Router({ mergeParams: true }); routes.get("/hello", (req, res) => { res.send("Hello world!"); }); routes.use((req: Express.Request, res: Express.Response, next: Express.NextFunction) => { res.locals["context"] = createContextMiddleware(); //res.locals["middlewares"] = createMiddlewareMap(); return next(); }); routes.use((req, res, next) => { console.log(`[${new Date().toLocaleTimeString()}] Incoming request to ${req.path}`); next(); }); authRouter(routes); profileRouter(routes); usersRouter(routes); catalogRouter(routes); DealerRouter(routes); quoteRoutes(routes); return routes; }; /** * * Comentarios: Cada usuario que no sea administrador tiene un registro asociado en "dealers" a modo de perfil * Endpoints Públicos /auth POST /auth/login: Permite a los usuarios autenticarse y recibir un token JWT. * Endpoints para Usuarios Registrados /auth POST /auth/logout: Permite a los usuarios cerrar sesión (podría implicar invalidar el token JWT). GET /auth/identity: Devuelve la identidad del usuario autenticado, incluyendo id, name, email, language y roles. /profile GET /profile: Obtiene el perfil del usuario autenticado. POST /profile: Actualiza el perfil del usuario autenticado. /catalog GET /catalog: Devuelve la lista de artículos del catálogo. /quotes GET /quotes: Devuelve las cotizaciones del usuario autenticado. POST /quotes: Permite al usuario crear una nueva cotización. PUT /quotes/ : Permite al usuario actualizar una cotización existente. DELETE /quotes/ : Permite al usuario eliminar una cotización existente. * Endpoints para Administradores /auth POST /auth/register: Permite al administrador registrar nuevos usuarios. /users GET /users: Devuelve la lista de todos los usuarios. POST /users: Permite crear un nuevo usuario. GET /users/ : Devuelve los detalles de un usuario específico. PUT /users/ : Permite actualizar los detalles de un usuario específico. DELETE /users/ : Permite eliminar un usuario específico. /dealers GET /dealers: Devuelve la lista de todos los distribuidores. POST /dealers: Permite crear un nuevo distribuidor. GET /dealers/ : Devuelve los detalles de un distribuidor específico. PUT /dealers/ : Permite actualizar los detalles de un distribuidor específico. DELETE /dealers/ : Permite eliminar un distribuidor específico. /quotes GET /quotes: Devuelve la lista de todas las cotizaciones. POST /quotes: Permite crear una nueva cotización. PUT /quotes/ : Permite actualizar una cotización existente. DELETE /quotes/ : Permite eliminar una cotización existente. */