Um exemplo de API REST que implementa o padrão CQRS e os princípios SOLID através de um CRUD de usuários.
É necessário ter o NET 7 e o Docker.
Após o clone do repositório, podemos rodar os seguintes comandos:
$ cd src
$ docker compose build
$ docker compose up
A organização geral foi feita através da divisão em subprojetos:
- ApiCQRS.Core: Onde é definido o contexto de usuário, através da definição de entidades e a abstração de acesso a dados.
- ApiCQRS.Infrastructure: Implementação da definição feita em ApiCQRS.Core, através da criação e definição de acesso aos dados.
- ApiCQRS.Application: Definição de Commands e Queries.
Tive alguns desafios na hora de realizar a Injenção de Dependência para o MediatR 12.0.1 no .NET 7.0, no entando consegui resolver referenciando o Assembly de forma "manual", como pode ser visto em ConfigureServices no arquivo Startup.
Ademais, foquei mais na implementação do CQRS ao invés de focar na regra de negócios, etc...