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 --- .../modules/interactions/interactions.routes.ts | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 api/src/modules/interactions/interactions.routes.ts (limited to 'api/src/modules/interactions/interactions.routes.ts') diff --git a/api/src/modules/interactions/interactions.routes.ts b/api/src/modules/interactions/interactions.routes.ts new file mode 100644 index 0000000..9487fcd --- /dev/null +++ b/api/src/modules/interactions/interactions.routes.ts @@ -0,0 +1,86 @@ +/** + * interactions.routes.ts + * + * Plugin Fastify com as rotas de interação sobre tickets. + * Registrado no server.ts com prefixo '/api/v1'. + */ + +import type { FastifyInstance } from 'fastify'; +import { + ticketIdParamsSchema, + updateTicketStatusBodySchema, + assignTicketBodySchema, + updateTicketPriorityBodySchema, + addCommentBodySchema, +} from './interactions.schema.js'; +import { + updateTicketStatusHandler, + assignTicketHandler, + updateTicketPriorityHandler, + addCommentHandler, + listCommentsHandler, +} from './interactions.controller.js'; + +async function interactionsRoutes(fastify: FastifyInstance): Promise { + + // ── PATCH /tickets/:ticketId/status ──────────────────────────────────────── + fastify.patch('/tickets/:ticketId/status', { + schema: { + tags: ['Interações'], + summary: 'Atualiza o status de um chamado', + params: ticketIdParamsSchema, + body: updateTicketStatusBodySchema, + }, + preHandler: [fastify.authenticate], + handler: updateTicketStatusHandler, + }); + + // ── PATCH /tickets/:ticketId/assign ──────────────────────────────────────── + fastify.patch('/tickets/:ticketId/assign', { + schema: { + tags: ['Interações'], + summary: 'Atribui ou reatribui um chamado a um agente', + params: ticketIdParamsSchema, + body: assignTicketBodySchema, + }, + preHandler: [fastify.authenticate], + handler: assignTicketHandler, + }); + + // ── PATCH /tickets/:ticketId/priority ────────────────────────────────────── + fastify.patch('/tickets/:ticketId/priority', { + schema: { + tags: ['Interações'], + summary: 'Altera a prioridade de um chamado', + params: ticketIdParamsSchema, + body: updateTicketPriorityBodySchema, + }, + preHandler: [fastify.authenticate], + handler: updateTicketPriorityHandler, + }); + + // ── POST /tickets/:ticketId/comments ─────────────────────────────────────── + fastify.post('/tickets/:ticketId/comments', { + schema: { + tags: ['Interações'], + summary: 'Adiciona um comentário (público ou nota interna) no chamado', + params: ticketIdParamsSchema, + body: addCommentBodySchema, + }, + preHandler: [fastify.authenticate], + handler: addCommentHandler, + }); + + // ── GET /tickets/:ticketId/comments ──────────────────────────────────────── + fastify.get('/tickets/:ticketId/comments', { + schema: { + tags: ['Interações'], + summary: 'Lista todos os comentários de um chamado', + params: ticketIdParamsSchema, + }, + preHandler: [fastify.authenticate], + handler: listCommentsHandler, + }); +} + +export default interactionsRoutes; -- cgit v1.2.3