Requisitos para iniciar:
-
Instale Docker desktop conforme a seguinte documentação
-
Instale Visual Studio(não o code) conforme a seguinte documentação
-
Instale mongodbcompass conforme a seguinte documentação
-
Instale Postman conforme a seguinte documentação
Abrindo o projeto
Após clonar o repositório do gitlab, abre o Visual Studio, selecione a opção "Abrir um projeto ou solução" e dentro da pasta onde está o repositório clonado, selecione o arquivo "histoteria-api.sln" conforme imagem a seguir.
Rodando o projeto
Com o projeto aberto no Visual Studio, e Docker desktop rodando, clique no botão "Play" onde esta escrito "Docker Compose"
Caso esse botão não esteja escrito Docker compose e sim outra coisa, clique na flecha pequena ao lado do botão e em seguida em "Configurar Projetos de Inicialização"
Você então chegará numa tela onde será possivel escolher "docker-compose" como metodo de inicializacao
Estando tudo certo e tendo clicado o botão play, será possivel ver no Docker Desktop os dois containers rodando.
Conectando ao banco do mongodb utilizando MongoDb Compass
Caso queira ver o conteúdo do banco, com os containers já rodando, abra o MongoDB compass e crie uma conexão conforme a imagem abaixo:
Inserções automáticas no banco de dados
Caso deseje que a api crie collections e faça inserções na mesma assim que a api inicia, altere o arquivo init-mongo.js. Dentro dele já existe um código de exemplo para usar como base:
Padrões de projeto
Convenções basicas para desenvolver em .NET podem ser encontradas aqui.
Utilizaremos um padrão comum em apis, onde o controller deve chamar um service e esse service possui a logica de negócio e deve então chamar os repositórios para fazer inserções no banco.
Importante ressaltar que, ao criar um novo repositório ou service, esse deve ser colocado no metodo de extensão "RepositoryExtension". Nele já existe um código de exemplo que deve ser seguido
Além disso, ao criar um novo Controller, lembre-se de colocar o decorator [ApiController] encima da classe do controller, além de fazer a classe extender a classe ControllerBase. No csharp, voce pode fazer isso fazendo algo como "ExemploController : ControllerBase"
Definition of Done
As tasks do backend só serão consideradas prontas para revisão quando:
- Merge Request criada
- Todos jobs da pipeline que rodarem no merge request tiverem passado
- Coleção do postman criada/atualizada