Query CQRS
Overview
Aplicar o padrão de consultas de leitura desacopladas dos comandos, retornando DTOs/projeções adequadas ao consumo da API sem expor entidades quando não necessário.
Guidelines
- Usar Query para leitura/projeção; usar Repository/entidade para fluxos de comando (create/update/delete e invariantes de escrita).
- Definir interfaces de query em
core(execute(...) => Promise<Result<DTO>>). - Implementar query no adapter de infraestrutura (ex.: Prisma) retornando DTO.
- Manter use case de leitura fino: chamar query, mapear falhas e aplicar formatação complementar quando necessário.
- Não acoplar query a regras de domínio de escrita.
- DTO de query:
- pode derivar de
*Props(ex.:UserProps,RoleProps) comOmit/campos adicionais; - ou ser DTO totalmente independente, conforme necessidade da projeção.
- não estender a classe da entidade.
- pode derivar de
Workflow
- Identificar se o caso é leitura (query) ou comando (repository).
- Definir contrato da query (
FindXxxQuery) e DTO de saída. - Implementar query no adapter (Prisma/in-memory), incluindo filtros/paginação quando aplicável.
- Usar a query no use case de leitura e mapear erros de domínio.
- Validar formato final do DTO para o consumidor (API/front).
- Criar testes cobrindo sucesso, vazio/not found e falhas.
References
Consultar references/query-cqrs-pattern.md para exemplos reais, checklist e critérios de modelagem de DTO.
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.