Este projeto é uma solução ASP.NET Core para gerenciamento de pagamentos, estruturada em múltiplas camadas seguindo boas práticas de arquitetura.
src/
├── Payments.sln
│
├── Core/ (Negócio)
│ ├── Payments.Domain/ # Entidades e regras de negócio
│ └── Payments.Application/ # Lógica de aplicação e CQRS
│
├── Infrastructure/ (Específico)
│ └── Payments.Infra/ # Acesso a dados (EF Core, Npgsql)
│
└── Presentation/
└── Payments.Api/ # API REST e controladores
- Core: Contém a lógica de negócio pura e independente de tecnologia
- Infrastructure: Implementações específicas de persistência e acesso a dados
- Presentation: Interface de usuário e pontos de entrada da aplicação
- CQRS (Command Query Responsibility Segregation): Separação entre comandos (escrita) e queries (leitura), implementado em
Payments.Application. - Versionamento de API: Controladores organizados por versão (v1) para facilitar evolução da API.
- Entity Framework Core: Utilizado para persistência de dados, configurado em
PaymentsDbContext. - Injeção de Dependências: Utilizada para desacoplamento entre camadas, configurada em
Program.cs. - API REST: Controladores em
Controllers/v1expõem endpoints HTTP versionados.
O sistema oferece:
- Gerenciamento de Pagamentos: CRUD completo de pagamentos
- Gerenciamento de Perfis: CRUD completo de perfis de usuários
- Sistema de Backup: Integração com Google Drive para backup de dados
-
Pré-requisitos
- .NET 9 SDK
- Banco de dados PostgreSQL configurado
-
Configuração
- Edite o arquivo
appsettings.jsoncom a string de conexão do banco de dados.
- Edite o arquivo
-
Restaurar Dependências
dotnet restore src/Payments.sln
-
Build
dotnet build src/Payments.sln
-
Executar a API
dotnet run --project src/Payments.Api/Payments.Api.csproj
A API ficará disponível em:
- HTTP:
http://localhost:5054 - HTTPS:
https://localhost:5055
- HTTP:
-
Testar Endpoints
- Acesse
http://localhost:5054para utilizar a API. - Utilize o arquivo
Payments.Api.httppara testar os endpoints com o REST Client do VS Code.
- Acesse
Para gerenciar o esquema do banco de dados, o projeto utiliza o Entity Framework Core Migrations.
Quando houver alterações nos modelos de domínio (em Payments.Domain), é necessário criar uma nova migração para refletir essas mudanças no banco de dados.
dotnet ef migrations add <NomeDaMigracao> --project src/Payments.Infra --startup-project src/Payments.ApiSubstitua <NomeDaMigracao> por um nome descritivo (ex: AddUserRoles).
Para aplicar as migrações pendentes e atualizar o esquema do banco de dados:
dotnet ef database update --project src/Payments.Infra --startup-project src/Payments.ApiPara limpar e recriar o banco de dados do zero, execute os seguintes comandos.
Aviso: O comando a seguir excluirá todos os dados do banco de dados.
-
Remover o banco de dados:
dotnet ef database drop --project src/Payments.Infra --startup-project src/Payments.Api --force
-
Aplicar todas as migrações novamente:
dotnet ef database update --project src/Payments.Infra --startup-project src/Payments.Api
- Os comandos e queries estão organizados em pastas separadas dentro de
Payments.Application/Commands/v1ePayments.Application/Queries/v1. - A API é versionada, com todos os controladores na versão v1 atualmente.
- O projeto utiliza boas práticas de separação de responsabilidades, facilitando manutenção e testes.
- As abstrações compartilhadas permitem fácil extensão e manutenção de integrações externas.
- O sistema de backup está integrado com Google Drive através do serviço
GoogleDriveService.
GET /api/v1/payments- Lista todos os pagamentosGET /api/v1/payments/{id}- Busca pagamento por IDPOST /api/v1/payments- Cria novo pagamentoPUT /api/v1/payments/{id}- Atualiza pagamentoDELETE /api/v1/payments/{id}- Remove pagamento
GET /api/v1/profiles- Lista todos os perfisGET /api/v1/profiles/{id}- Busca perfil por IDPOST /api/v1/profiles- Cria novo perfilDELETE /api/v1/profiles/{id}- Remove perfil
POST /api/v1/backup- Cria backup no Google Drive