Este repositorio e o template base usado para gerar novas APIs .NET da Vyracare.
Ele ja nasce com:
- arquitetura em
vertical slice - JWT
- MongoDB
- AWS Lambda
- Swagger
- integracao com AWS Systems Manager Parameter Store
- projeto de testes unitarios
- automacao de rename para adaptar nomes de assembly, recurso e rotas
A automacao:
- cria o novo repositorio
- clona o template
- executa o rename-dotnet-project.sh
- substitui placeholders como:
[assembly-generic][resource-generic][table-generic][repo-generic]
- renomeia arquivos e diretorios
- publica o projeto final no novo repositorio
Por isso este template bruto nao compila antes do rename. Ele e um scaffold parametrizado.
Leia nesta ordem:
- Program.cs
- rename-dotnet-project.sh
- A feature generica em
Features/[resource-generic] - A porta em
Shared/Ports - O adapter Mongo em
Infrastructure/Persistence - O projeto de testes em
Vyracare.Api.[name-generic].Tests
Pecas compartilhadas:
- options
- resultado padrao
- abstracao de tempo
- extensoes HTTP
Cada caso de uso do recurso fica em uma pasta propria:
CreateListGetById
Contem:
- entidade de dominio
- interface de repositorio
Contem detalhes tecnicos:
- leitura de parametros seguros
- repositorio Mongo
- documento Mongo
- DI
Contem exemplos iniciais de testes unitarios para o projeto gerado.
- o template nao e a API final
- ele e uma matriz parametrizada
- os placeholders representam nomes que so vao existir no projeto gerado
- a estrutura criada serve como ponto de partida para novas features reais
Quando a API for criada a partir do template, o fluxo sera:
- controller recebe a request
- handler executa a regra
- handler usa uma porta
- infraestrutura implementa a porta com MongoDB
- controller devolve a resposta HTTP
Essa estrutura foi escolhida porque:
- deixa o dominio mais claro
- facilita testes unitarios
- reduz acoplamento com detalhes tecnicos
O template ja nasce sem segredos reais versionados.
Parametros padrao:
vyracare/shared/mongo-prodvyracare/shared/mongo-hmlvyracare/shared/mongo-devvyracare/shared/jwt-signing-prodvyracare/shared/jwt-signing-hmlvyracare/shared/jwt-signing-dev
Fallbacks suportados:
MONGO_URIJWT_KEYJWT_ISSUERJWT_AUDIENCECORS_ALLOWED_ORIGINS
Arquivos importantes:
- appsettings.json
- ParameterStoreBootstrapper.cs
O template ja gera exemplos para:
- criacao do recurso
- consulta por id
Objetivo:
- mostrar o padrao esperado de teste
- facilitar que novas APIs ja nascam com cultura de teste
- evitar depender de banco real nos testes de regra
Se no futuro a Vyracare quiser que toda nova API nasca tambem com Update e Delete, o caminho e:
- criar novas pastas em
Features/[resource-generic] - adicionar handlers, requests e portas
- atualizar o controller
- atualizar o repositorio Mongo
- registrar tudo em
ServiceCollectionExtensions - expandir o projeto de testes
- garantir que o
rename-dotnet-project.shcontinua cobrindo todos os placeholders
Este repositorio, do jeito que esta, nao e um projeto de negocio compilavel, porque os placeholders ainda fazem parte do codigo-fonte.
O que e compilavel e o projeto gerado apos a automacao de rename.
Entao a validacao correta do template e:
- gerar um projeto novo
- rodar o rename
- compilar o repositorio gerado
- executar os testes do repositorio gerado
Os projetos gerados a partir deste template devem seguir o padrao de commits em portugues.
Exemplos:
feat: adiciona endpoint de agendamentofix: corrige leitura de parametro do mongodocs: atualiza readme da api