Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • aiprodutor-backend aiprodutor-backend
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 5
    • Merge requests 5
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Ai Produtor Sistema de Cadastro e Gestao de Produtores de Hortifrutie
  • aiprodutor-backendaiprodutor-backend
  • Merge requests
  • !40

Merged
Created Oct 07, 2025 by Lucas Ramon Schnorrenberger@lucas.schnorrenbergerOwner

refactor: Evolui o schema do banco e alinha o código da aplicação

  • Overview 1
  • Commits 1
  • Changes 46

Este Merge Request (MR) implementa uma refatoração significativa no schema do banco de dados para aumentar a flexibilidade, consistência e integridade dos dados. Todo o backend foi alinhado a esta nova modelagem, com foco especial na simplificação do modelo de produtos e na padronização dos status de safra.

Evolução do Schema (Prisma) Remoção da Entidade Variety: A tabela varieties foi removida. O conceito de "variedade" foi unificado na tabela products para simplificar a lógica e o cadastro.

Produtos Globais e Customizados: A tabela products agora contém um campo producerId que pode ser nulo. Se producerId for NULL, o produto é considerado global e disponível para todos. Se producerId estiver preenchido, é um produto customizado daquele produtor.

Status de Safra (HarvestStatus): O campo status da tabela harvests, que era uma String, foi transformado em um Enum (IN_PROGRESS, COMPLETED, CANCELLED) para garantir a integridade dos dados, conforme alinhado com a Luiza.

Reset de Migrações: O histórico de migrações foi resetado para um único arquivo init limpo, refletindo o estado final e consolidado do banco de dados.

Alinhamento do Backend (NestJS) Módulo products: A lógica de criação foi ajustada para suportar produtos globais e customizados. A regra de negócio agora impede a duplicação de nome apenas no escopo correto (global ou por produtor).

Implementada a rota GET /products/producer/:producerId, que retorna uma lista com os produtos globais mais os produtos específicos do produtor, ordenados alfabeticamente. A resposta contém apenas id e name.

Módulos harvests e plantings: Todo o código foi refatorado para remover qualquer menção ou dependência da antiga entidade Variety.

Módulo varieties: O módulo varieties e todos os seus arquivos (controller, service, repository, DTOs) foram completamente removidos do projeto.

Por Que Foi Feito? Simplificação: Unificar product e variety em um único conceito simplifica o cadastro e a lógica de negócio para o usuário final.

Flexibilidade: Permitir que produtores criem seus próprios produtos, mantendo um catálogo global, oferece autonomia sem perder a padronização.

Integridade dos Dados: O uso de Enum para HarvestStatus previne a inserção de dados inválidos ou inconsistentes, um problema comum com campos de texto livre.

Manutenibilidade: A padronização do schema e a limpeza do histórico de migrações tornam a base de código mais fácil de entender e manter.

Modelagem do banco de dados usada como base https://dbdiagram.io/d/Ai-Produtor-68e011eed2b621e4222ffb79 image

Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: refactor/database-schema-evolution