Skip to content

Feature/eventos:Escrita - POST/PUT/DELETE - #542

Merged
EduTiyo merged 7 commits into
532-cadastro-expedicoesfrom
feature/eventos-escrita
Sep 24, 2026
Merged

EduTiyo merged 7 commits into
532-cadastro-expedicoesfrom
feature/eventos-escrita

Conversation

@vitorhugomoraes2486

Copy link
Copy Markdown

Endpoints implementados:

  • POST /api/v2/expedicoes/:expedicaoId/eventos
  • PUT /api/v2/eventos/:eventoId
  • DELETE /api/v2/eventos/:eventoId

Construção PUT:

  • O PUT do agregado evento + ficha de coleta; trocar tipo de COLETA para DIARIO apaga a linha em eventos_coletas; o caminho inverso cria a linha; manter o tipo e enviar coleta faz upsert (evento_id é PK);
  • Reaproveitamento de Evento.create() para validar o PUT.

Tratamento de erros:

  • CheckViolationError: sinaliza rejeição do Postgres por violr uma regra eventos_tipo_check. Só aceita tipo = DIARIO ou COLETA;
  • ForeignKeyViolationError: expedicao_id enviado não existe no banco, respondido com status 404;
  • UnprocessableEntityError : a classe que faz o servidor responder com o status 422.

Pontos marcados nos controllers para quando a autenticação for implementada.

@EduTiyo EduTiyo left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revisão em duas frentes (Standards e Spec) da escrita de Eventos. A transação do PUT do agregado (trocar tipo COLETA↔DIARIO apagando/criando eventos_coletas, upsert quando o tipo não muda) está correta e dentro de uma transação só, e o mapeamento CHECK→422 foi rastreado ponta a ponta e funciona. Peço mudança por um motivo concreto: dois testes de integração deixam dados vazarem se a asserção falhar, violando a regra do próprio test/integration/README.md. O resto são observações de manutenibilidade, não bloqueantes.

Comment thread test/integration/evento/eventos-http.test.ts
Comment thread src/application/evento/RemoverEventoController.ts
Comment thread src/application/evento/CriarEventoController.ts Outdated
Comment thread src/domain/evento/AtualizarEventoUseCase.ts
- extrai COLETA_FIELDS para Evento.ts e coleta-parsing.ts, eliminando a duplicação de CAMPOS_DA_FICHA
- extrai AtualizarEventoValidator com a regra de coerência própria do update
- alinha RemoverEventoController com o mesmo mapeamento de erro dos outros 2 controllers (404 para FK, 422 para CHECK)
- corrige testes de integração sem try/finally em eventos-http.test.ts (cleanup vazava)
@vitorhugomoraes2486

Copy link
Copy Markdown
Author
  • Extrai COLETA_FIELDS para Evento.ts e coleta-parsing.ts, eliminando a duplicação de CAMPOS_DA_FICHA/isPlainObject/parseColeta;
  • Extrai AtualizarEventoValidator com a regra de coerência própria do update (o que fazer com a ficha em cada transição de tipo);
  • Alinha RemoverEventoController com o mesmo mapeamento de erro dos outros 2 controllers (404 para FK, 422 para CHECK);
  • Corrige testes de integração sem try/finally em eventos-http.test.ts.

@EduTiyo
EduTiyo merged commit 44eb344 into 532-cadastro-expedicoes Sep 24, 2026
5 checks passed
@EduTiyo
EduTiyo deleted the feature/eventos-escrita branch September 24, 2026 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants