Dto
Overview
Aplicar o padrão de DTOs para fronteiras de aplicação/leitura, separando claramente entrada, saída e projeções de query conforme o consumidor e o caso de uso.
Guidelines
- Distinguir DTO por finalidade:
- Input DTO (
InDTO): entrada de use case/comando/filtro. - Output DTO (
OutDTO): resposta de use case/controlador. - Query DTO (CQRS): projeção de leitura para API/front.
- Input DTO (
- Query DTO não deve estender classe de entidade.
- DTO pode:
- derivar de
*Props(ex.:UserProps,RoleProps) comOmit/Pick; - ou ser totalmente independente quando a projeção exigir.
- derivar de
- Manter DTO sem regra de domínio e sem acoplamento ao ORM.
- Preferir nomes explícitos (
FindAllUsersOutDTO,ProductFiltersDTO,RoleDTO).
Workflow
- Identificar o tipo de DTO (input, output ou query).
- Definir o contrato mínimo necessário para o consumidor.
- Escolher base de tipagem:
*Props+ adaptação (Omit/Pick) quando fizer sentido;- tipo dedicado quando a projeção é diferente do domínio.
- Padronizar paginação/filtros/metadados quando aplicável.
- Revisar uso no use case/query/repository para manter fronteiras corretas.
References
Consultar references/dto-pattern.md para exemplos reais do projeto, convenções e checklist.
Consultar ../skills-standards.md para convenção global de nomenclatura.
Global Standards
- Consultar
../skills-standards.mdpara padroes globais de nomenclatura e convencoes gerais entre skills.