Feature/tar 1 criar api motorista#51
Open
phillrog wants to merge 83 commits into
Open
Conversation
…ção dos mappings, criação do repositorio, criação do contexto
… compose e adicionado banco MSSQL, rabbitmq e portainer
…tabelas com migration
… do repositorio de motorista
…a adicionar um motorista
… processa a adição no motorista
…todo POST para criar um motorista
…ualizar dados do motorista
Foi refatorado para usar o método extendido
…atualizar os dados do motorista
…er para atualizar o motorista
…a mapear o comando adicionar
…tica para usar o método de extensão que mapea o comando atualizar
…do buscar motorista por ID
FOi implementado o handler do comando deletar
…r para buscar coordeanda
…transmitira o endereço para consultar no handler
…ntegração para solicitar coordenada
…pegar o config connectionstring do rabbit
…agebus setando o handler
…a assinar o respond
… do evento para consultar coordenada
…coordenadas ao endereço
…coordenadas ao endereço
…s de coordenadas a query
…ration handler para consultar as coordenadas ao receber request
…lta das coordeandas ao adicionar e atualizar
…nadas ao mapeamento da entidade endereço
…priedades da entidade endereço
…e avisar sobre comentário
…e não mais no-content
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✍🏼 EXPLICAÇÂO
⏱️ Inicialmente
Foi criado a branch feature/TAR-1-Criar-API-Motorista como se existisse gitflow e jira para receber os comentários do commit com #comment.
🏢 Estrutura
A solução para o cadastro de motorista e consulta das coordenadas geográficas do endereço dele foi criada utilizando os conceitos de DDD. Foi começado pela modelagem de domínios ricos. Suas camadas foram segregadas de forma lógica e não física.
Então sua estrutura ficou algo:
Building Blocks
Services
Os microserviços foram criados de forma a trabalhar distribuídos, cada api trabalho com seu contexto ficou muito simples.
🏢 Padrões
Foi implementado CQRS com Mediator no cadastro de motorista. Foi criado :
Foi utilizado padrão de menssageria RPC Request/Response para quando adicionar/atualizar um motorista fazer um request na API de CoordenadasGeograficas .
Foi utilizado padrão CircuitBreaker com Polly no serviço que faz o request a api do google, fica fechado se estiver funcionando e aberto (falha) se algo acontecer. E também WaitAndRetry para se concetar com RabbitMQ
🚀 Bibliotecas
As APIS foram criadas na versão .NET Core 3.1.
📦 Docker
Foi dockerizado toda a aplicação. Foi criado as apis com dockerfile e construido o dockercompose para subir o container do :
💉 Google Maps API
No Google Cloud Platform:
Depois foi criado um serviço na Wappa.CoordenadasGeograficas.API chamado GoogleGeocondingService ele faz o request com HttpClient passando os dados de endereço e a Key.
📝 Documentação
Foi implementado uma documentação simples com Swagger.
⌚ Tempo de execução
O projeto foi iniciado ás 21:46 do dia 08/03, fui até às 03:57 do dia 09/03. Eesse período foi a etapa primordial onde tive que entender, refletir e dar os primeiros passos no projeto, criando a api Wappa.Motoristas.API, o banco, modelando a entidades, dockerização do projeto, ocorreram problemas com docker, com bibliotecas, namespaces rsrs. Mas foi possível criar e implementar os enpoinst a adição (POST), atualização (PUT) e o deletar (DELETE) da api motorista.
Depois voltei as 20:43 do dia 09/03 e comecei a pensar nas coisas que faltavam, deu desespero rsrs, levantei que faltava fazer a querie (GET), consulta a api do google, documentar as apis, retornar a consulta para a api motorista, conseguir uma chave para consultar a api e se desce tempo criar algum teste unitário (o que não aconteceu). Iniciei o dia e fui fazendo a query com Dapper, documentei a api com swagger isso era 22:01.
Comecei a criar Wappa.CoordenadasGeograficas.API com os mesmos padrões da Wappa.Motoristas.API, configs, documentação, etc..., depois fui atrás de como usar a api do google mais ou menos 00:59 já estava fazendo a consulta do google maps mas não estava implementado certo, em um serviço registrando como AddHttpClient etc....
Em seguinda quando finalizeu a api Wappa.CoordenadasGeograficas.API, apenas o GET recebedn o endereço para consulta, comecei a implementar o RPC Request/Response, as abstrações e testar se quando mandava SolicitouCadastroMotoristaIntegrationEvent pela api motorista, a Wappa.CoordenadasGeograficas.API estava pegando no serviço CoordenadasIntegrationHandler. FOi até mais ou menos até as 02:59 do dia 10:03 para fazer isso funcionar. Só que surgiu um problema, tinha que devolver a consulta com as coordenadas de volta para Wappa.Motoristas.API, e só dava erro até que por volta das 4:50 consegui retornar os dados e comecei a implementar os mapeamentos para gravar na base ( colocar as propriedades nas DTO dos comandos, nas DTOS, etc...), mapear na entidade, criar o migrations, acerta o migrations pois havia digitado o nome errado da propriedade. E por fim acho que a partir das 5:00 testando o crud de motorista e a consulta. Infelizmente não deu tempo de criar testes. E sigo desde então nesta documentação.
Foi um grande desafio pois comecei no dia 08/03 no fim da noite, enfrentei a jornada de trabalho durante o dia 09/03, e também dando atenção a família, brincando com minha filha fui voltar quase no fim da noite de ontem 09/03 e seguindo até agora 07:37.
Enfim foi legal agradeço a oportunidade.
🏃♂️ Como rodar ?
update-database -StartupProject Services\Motorista\Wappa.Motoristas.APIpara executar o migrations❤️ APIs
👍 Resultado
👏 👏 👏 Wappa.Motoristas.API
👏 👏 👏 Wappa.CoordenadasGeograficas.API