Este repositório contém um exemplo de implementação de Event Sourcing usando ASP.NET Core e SQLite. O projeto demonstra como criar, armazenar e recuperar eventos relacionados a contas bancárias, além de calcular o saldo atual de uma conta.
Event Sourcing é um padrão de design onde as mudanças no estado de um aplicativo são armazenadas como uma sequência de eventos. Este exemplo mostra como implementar Event Sourcing em uma aplicação ASP.NET Core com um banco de dados SQLite.
- Criação de contas bancárias
- Depósito de dinheiro
- Saque de dinheiro
- Recuperação do saldo atual da conta
- Persistência de eventos em banco de dados SQLite
Controllers: Contém os controladores da APIEvents: Define os eventos utilizados no Event SourcingAggregates: Define os agregados (entidades) do domínioRepositories: Contém a lógica para armazenamento e recuperação dos eventosData: Configurações do Entity Framework Core
git clone https://github.com/seu-usuario/event-sourcing-example.git
cd event-sourcing-exampleNo arquivo appsettings.json, configure a string de conexão para o SQLite:
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=eventsourcing.db"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}Para garantir que o banco de dados e as tabelas necessárias sejam criados, execute as migrações:
dotnet ef migrations add InitialCreate
dotnet ef database updatePara executar a aplicação:
dotnet runA aplicação estará disponível em https://localhost:5001 e a interface do Swagger pode ser acessada em https://localhost:5001/swagger.
POST /api/BankAccountCorpo da Requisição:
{
"accountId": "GUID"
}POST /api/BankAccount/{accountId}/depositCorpo da Requisição:
{
"amount": 100.0
}POST /api/BankAccount/{accountId}/withdrawCorpo da Requisição:
{
"amount": 50.0
}GET /api/BankAccount/{accountId}/balanceResposta:
{
"accountId": "GUID",
"balance": 50.0
}Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.