E aí gente beleza mais um vídeo aqui sobre Gol a gente vai começar um assunto que muita gente pedia aqui no canal que é simplesmente um curso em Gol Então como que eu posso fazer aqui para eu começar do zero em Gol não sei nada eu quero criar meu primeiro projeto em Gol para ter um portfólio por onde eu começo então eu vou trazer aqui no canal agora o nosso primeiro projeto juntos aqui em golagen a gente vai criar passo a passo vídeo a vídeo aqui melhorando o nosso projeto Então nós vamos aprender desde comunicação
entre bancos de dados e aplicação docker aqui dentro da nossa aplicação como que a gente disponibiliza testes integrados testes unitários comunicação entre serviços como que a gente consegue documentar muito bem a nossa aplicação como que a gente consegue seguir o mvc dentro de um projeto completo e assim por gente a gente vai aprender tudo isso aqui em vídeos no canal eu vou trazer vídeos semanais aqui sobre esse tópico Então todo toda semana ele vai ter um vídeo sobre esse tópico melhorando o nosso projeto espero que vocês aprendam Espero que seja um projeto bem produtivo e
que vocês consigam apresentar esse projeto como portfólio onde vocês forem falar assim eu já fiz um projeto em gol e foi com exemplos lá no Hang code Então vamos lá para o vídeo vamos começar o nosso primeiro curso aqui no canal Então vamos lá qual que é a ideia aqui no nosso primeiro curso nosso primeiro projeto né Esse vídeo é basicamente uma apresentação do que que a gente vai ver nos próximos vídeos aqui desse projeto Beleza então qual é a ideia Inicial aqui a gente vai criar um aplicação crude inicialmente que não vai ter nada
visual vai ser sol backing mesmo por enquanto tá é só aplicação basicamente vai ter disponibilizada várias apis para a gente comunicar com Ash Então a gente vai deixar ela com Postman ou o que a gente preferir Então a gente vai disponibilizar várias rotas com essas rotas a gente vai receber vários dados a gente vai validar dados então a pessoa não vai poder mandar um e-mail qualquer a gente vai validar se ela enviou o e-mail correto se ela enviou o número correto você nem viu o nome de usuário correto se a senha atende os nossos requisitos
se ela tá enviando um token de autenticação Então ela só pode fazer as coisas se ela tiver um token e assim por diante a gente vai ver tudo essa parte de validação depois disso a gente vai ver toda a parte de Services como avalida os dados Qual é a regra de negócio da minha aplicação como eu separo as de negócio da minha aplicação depois disso a gente vai para a parte de comunicar com o banco de dados né então comunicação como a gente dados como que eu conecto como que eu separo esse interfaces para se
acaso quiser mudar de banco de dados mas para frente como que eu separo a minha aplicação da minha entidade Como que eu consigo fazer toda essa questão de organização Então a gente vai ver muito a questão do mvc não é melhor arquitetura mas eu vou trazer mvc inicialmente para a gente poder aprender bem ela e fixar bem a organização de projeto com ela beleza e a gente vai aprender também com a partir de documentação Como que é o documento a minha aplicação Como que o documento a minha api com Swagger uma documento cada função que
cada função faz o que cada objeto faz quando o gol doc que eu já trouxe aqui no canal também e por último a gente vai ver também a partir de docker como que eu coloco a minha aplicação dentro de um docker como utilizo docker file e assim por diante a gente vai ver tudo aqui no canal Beleza então vai englobar vários assuntos que eu vou trazer aqui para vocês certo então esse daqui vai ser o desenho que a gente vai utilizar Beleza então a gente vai ter que ir no nosso usuário é que vai simplesmente
ser a pessoa que vai chamar a nossa pi inicialmente Beleza então esse usuário na hora que ele fizer uma inquisição pra nossa rota ele vai primeiro validar o token jwt então ele vale requisição pegando o valor de autorization e vendo se o mesmo é válido Então a gente vai validar o token ver se a pessoa mandou um toque inválido se o token não está inspirado e assim por diante esse cara vai ser um Midway aqui que vai bater antes de chegar no nosso controle beleza Vale do deu certo tá tudo certo ele vai mandar http
requash para o próximo Midway que no caso vai ser o nosso controle então ele vai receber os dados e validar então o controle vai chamar uma função para validar esses dados foram enviados corretamente exemplo seu e-mail recebido tem em formato de e-mail se a idade é válida e assim por diante etc Beleza então fez isso tá tudo certo tudo validado então a gente vai vir aqui pro lado então isso aqui a gente tá dentro do Controller tá depois agora a gente vai vir para dentro do View Então a gente vai ter um objeto request que
a gente vai ter extraído da nossa http Quest e a gente vai converter essa request para um Model que é um outro objeto que vai ser basicamente da nossa aplicação o objeto coração ali o Korn da nossa aplicação Beleza então a gente vai converter o Quest para Model então Controller depois de validar os dados vai chamar uma função navio para converter para o objeto principal o móvel beleza converteu tá tudo certinho Ele vai retornar para a gente objeto módulo certo com objeto modo em mãos a gente vai ter dentro do objeto modo a implementação das
nossas funções que é basicamente o service ali o Core a regra de negócio né então a gente vai dar lá o objeto modo é o ponto o nome da função que ele vai aparecer e ele vai funcionar e ele vai chamar lá uma função que aquele objeto implementa Beleza então função interna do modo para realizar a ação no banco de dados então com o objeto modo em mãos é a gente vai basicamente chamar a função de dentro desse objeto modo então é as implementações desse objeto que métodos esse objeto tem dentro dele Então a gente
vai dar lá o objeto modo e o ponto função um objeto modo é o ponto função dois e assim por diante são métodos que aquele modem implementa Beleza então função interna do modo para realizar ação no banco de dados o controle com um objeto model em mãos vai ter acesso a métodos públicos do objeto sendo assim recebendo também as funções que chamam a base de dados seja para salvar alterar excluir e consultar Beleza então aqui basicamente vai ter a regra de negócio então a todas as regras que a gente tiver toda a comunicação com uma
interface de banco de dados vai estar dentro desse modo beleza quem que é esse modo esse modo como ele é a regra de negócio ele vai estar dentro de modo então ele vai ser a nossa regra ele vai ser quase como se fosse o nosso service Beleza então a gente vai ter o modo que ele vai chamar essa função interna essa função interna vai validar as regras e realizar a operação no banco de dados que aí vai realmente realizar o crush que a gente quer né então ao ser requisitado o modo vai chamar uma interface
de repositor e na qual vai ser responsabilizar de chamar o banco de dados correto e retornar valor esperado Mas por que uma interface aqui né a gente já falou isso sobre lá nas questões de Solid que basicamente a gente colocando uma interface entre os bancos de dados se eu tiver utilizando um longo DB +ql post Gris Dynamo debil banco de dados que for o meu service ele não tem que mudar então se um dia eu tô usando o mongo DB ou passar utilizar post grisal mais Kelly um service não tem que mudar não tem que
mudar nada nele então a interface ela ajuda a desacopular essa dependência direta entre as duas pontas Beleza então vou colocando uma interface basicamente ela vai fazer com que ó serve-se ou no caso Model Essa é a interface que você vai chamar essa é a função get user by name por exemplo você não tem que saber qual banco de dados eu vou utilizar o que que eu vou utilizar como eu vou fazer você tem que saber que essa função existe e que ela vai chamar uma base de dados e é isso que a interface vai fazer
Beleza então a gente vai achar mais interface e é implementação dessa interface vai realizar a operação no banco de dados então aqui será realizada chamada de dados configurado para fazer a operação necessária Beleza então feito isso fez o que tinha que fazer ele vai retornar para a gente vai retornar objeto Model aqui que no caso ele vai ter um entity aqui que vai transformar em modo que até esqueci que no desenho que vai trazer aqui pra gente um modo trazendo um Model aqui antes dele passar para frente ele vai converter o modo para response porque
isso porque nem sempre todos os dados que a gente tem em mãos a gente quer retornar para o cara então por exemplo ele mandou para gente que ele quer criar um usuário ele mandou lá o usuário e senha beleza só que depois que ele cria o usuário eu não tenho porque ficar retornando a senha para eles para ele eu simplesmente quero retornar o que ele o que eu quero que ele saiba que exista né então basicamente aqui a viola vai converter o modo para responsa que o responsa vai ter os objetos os valores só que
eu quero retornar só valores que eu quero é que a pessoa saiba então o modo ele tem tudo você vai ter só alguns dados filtrados né então nem todas as Campos queremos informar na resposta sendo assim teremos um converter que fará isso pra gente retornando apenas os dados necessários para Quem realizou a requisição então aqui basicamente ele vai converter um objeto em outro para a gente poder retornar Sem problema nenhum Beleza então ele vai retornar o objeto response que vai retornar objeto response para cá que vai retornar uma httplus e vai retornar para o nosso
usuário que fez a requisição Beleza então esse é o nosso desenho Espero que tenha dado para entender a gente vai tratar desse assunto muito aqui no canal ainda se tiver qualquer dúvida pode deixar nos comentários que aqui como eu vou criando os vídeos a cada semana pode ser que eu esqueça de alguma coisa e possa trazer mais vídeos explicando algum ponto que ficou para trás Beleza espero que vocês tenham gostado nos anos no próximo vídeo em gol e vocês vão primeiro vão ver o primeiro curso de Gol aqui no canal e vai ser bem legal
beleza então até a próxima e falou [Música] [Música]