From ef55d9bb24430610b60c1b77821307cd72c08c55 Mon Sep 17 00:00:00 2001 From: zwlucas Date: Sat, 25 Jul 2026 18:23:29 -0300 Subject: feat: upload of the project Signed-off-by: zwlucas --- api/src/modules/tickets/tickets.routes.ts | 75 +++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 api/src/modules/tickets/tickets.routes.ts (limited to 'api/src/modules/tickets/tickets.routes.ts') diff --git a/api/src/modules/tickets/tickets.routes.ts b/api/src/modules/tickets/tickets.routes.ts new file mode 100644 index 0000000..69c04a4 --- /dev/null +++ b/api/src/modules/tickets/tickets.routes.ts @@ -0,0 +1,75 @@ +/** + * tickets.routes.ts + * + * Plugin Fastify com todas as rotas do módulo de tickets. + * Registrado no server.ts com prefixo '/api/v1/tickets'. + * + * Rotas disponíveis: + * POST /api/v1/tickets → abre novo chamado + * GET /api/v1/tickets → lista chamados (com filtros e paginação) + * GET /api/v1/tickets/:id → busca chamado por ID + */ + +import type { FastifyInstance } from 'fastify'; +import { + createTicketBodySchema, + listTicketsQuerySchema, + ticketParamsSchema, +} from './tickets.schema.js'; +import { + createTicketHandler, + listTicketsHandler, + getTicketByIdHandler, + deleteTicketHandler, +} from './tickets.controller.js'; + +async function ticketsRoutes(fastify: FastifyInstance): Promise { + + // ── POST /api/v1/tickets ────────────────────────────────────────────────── + fastify.post('/', { + schema: { + tags: ['Tickets'], + summary: 'Cria um novo chamado', + description: 'Cria um novo chamado, definindo o criador como o usuário logado.', + body: createTicketBodySchema, + }, + preHandler: [fastify.authenticate], + handler: createTicketHandler, + }); + + // ── GET /api/v1/tickets ─────────────────────────────────────────────────── + fastify.get('/', { + schema: { + tags: ['Tickets'], + summary: 'Lista os chamados', + description: 'Retorna a lista de chamados, suportando filtros e paginação.', + querystring: listTicketsQuerySchema, + }, + preHandler: [fastify.authenticate], + handler: listTicketsHandler, + }); + + // ── GET /api/v1/tickets/:id ─────────────────────────────────────────────── + fastify.get('/:id', { + schema: { + tags: ['Tickets'], + summary: 'Busca um chamado pelo ID', + params: ticketParamsSchema, + }, + preHandler: [fastify.authenticate], + handler: getTicketByIdHandler, + }); + + // ── DELETE /tickets/:id ──────────────────────────────────────────────────── + fastify.delete('/:id', { + schema: { + tags: ['Tickets'], + summary: 'Exclui um chamado pelo ID', + params: ticketParamsSchema, + }, + preHandler: [fastify.authenticate], + handler: deleteTicketHandler, + }); +} + +export default ticketsRoutes; -- cgit v1.2.3