Repository
Overview
Aplicar o padrão de repositório para escrita e leitura de entidades de domínio com contratos no core e implementação desacoplada em infraestrutura.
Guidelines
- Definir contrato em
packages/*/core/src/**/provider/*.repository.ts. - Reutilizar bases de shared quando aplicável (
CrudRepository,CreateRepository, etc.). - Implementar em adapter de infraestrutura (ex.:
apps/backend/src/**/*.prisma.ts) retornandoResult. - Mapear domínio explicitamente:
toDomain: payload do banco -> entidade.fromDomain: entidade -> payload de persistência.
- Tratar falhas com
Result.fail(...)e não vazar exceção no fluxo normal. - Manter separação CQRS:
- Repository para comando/escrita e leitura orientada a entidade.
- Query para leitura/projeção DTO.
Workflow
- Confirmar agregados/entidades cobertos pelo repositório.
- Definir/ajustar contrato no core com métodos mínimos necessários.
- Implementar adapter de infraestrutura respeitando o contrato.
- Implementar mapeamento
toDomain/fromDomain. - Garantir consistência transacional para operações compostas.
- Criar/ajustar mocks in-memory para testes de use case.
References
Consultar references/repository-pattern.md para contratos, exemplos de implementação 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.