E aí gente beleza mais um vídeo aqui sobre Gol a gente vai finalizar o assunto de validação de Campos aqui no nosso projeto a gente vai basicamente deixar os erros mais bonitos a gente vai retornar para a pessoa que chamou a nossa requisição uma forma mais clara do porquê que a requisição deu erro por que que a gente retornou erro e quais Campos estão incorretos e o porquê que eles estão incorretos Então a gente vai criar hoje a validação mais completinha aqui no nosso projeto Então vamos lá então para isso aqui a gente vai utilizar a nossa pasta configuration beleza aqui dentro de configuration vocês vão criar uma nova pasta Então a gente vai chamar de validation beleza vamos chamar de validay e aqui a gente vai criar um Valente e user Beleza então valentinzer. gou que a gente vai criar a validação dos nossos Campos a validação ela já está sendo feita como a gente viu no último vídeo beleza mas aqui a gente vai deixar os erros mais bonitos Então como que a gente vai fazer isso tá a gente vai basicamente usar um cara chamado translate Então a gente vai basicamente transformar os erros de uma forma mudar a mensagem de erro tá então aqui você vai criar o nosso pacote com o nome validation Beleza então a gente vai criar aqui Vale deixam com os campos com o pacote criado Então vamos para criar aqui a validação em si Beleza então primeiro a gente precisa criar as variáveis aqui de translate e de validação tá com isso a gente vai criar uma variável chamada Vale date tá que a gente vai chamar com uma variável Global porque isso porque a gente precisa pegar essa variável e utilizar lá no nosso controlo para a gente conseguir fazer o transplante dessa informação mandando o erro que a gente já tem em mãos tá que vai ser uma rede de erros mas a gente vai ver já já beleza a gente vai colocar um vale dator ponto New tá então a gente vai inicializar o vale dator validator vai vir a partir de quê De validator ligou o playground Vale deter que é a biblioteca que a gente importou no último vídeo só que aquele sempre importa o validator comum então a gente vai colocar um barra V10 tá pra gente pegar a última avaliação a última versão do Vale data tá então vocês vão dar um importe que a gente vai abrir. com playground de validator/v10 especificamente beleza aqui a gente vai criar um translate vou colocar um transl para ele não dar conflito com o nome do pacote que é translate tá e a gente vai distanciar ele do tipo u t ponto translator Beleza então a gente vai instanciar esse pacote aqui aqui dentro do nosso projeto Esse pacote ele não está conseguindo importar Então a gente vai criar aqui um parênteses tá então a gente vai jogar esse porte lá para dentro então joga esse importe aqui dentro e a gente vai importar aqui na mão então eu vou dar um github.
com/goplayground na mesma forma do de cima tá a go playground barra o universo translator tá vendo é esse cara que a gente precisa instalar importar aqui então ele já criou ele aqui um apelido de Up porque a gente utilizou o t aqui embaixo tá mas a gente poderia chamar de translate aqui da mesma forma da Ariana mesmo agora a gente vai criar o nosso método para receber a mensagem e fazer a validação em si só que antes a gente precisa inicializar Esse pacote de alguma forma a gente precisa inicializar passando Qual é a linguagem que a gente quer transformar né a gente quer passar para inglês caso o erro já está em inglês mas vocês vão entender que basicamente é uma biblioteca para fazer essa conversão e a gente precisa para ela então a gente vai ter uma função inite tá a função ininite ela sempre vai rodar quando a aplicação rodar e carregar esse pacote tá então aqui a gente vai precisar de um cara chamado bindini aqui no caso tá então tá vendo Band em ponto validator ponto Engine esse cara aqui que a gente precisa beleza esse cara aqui ele é um método tá então na hora que eu salvar ele vai importar o Band já do jinglene que tá vendo que a gente utiliza o jinglene que lembra que eu falei no último vídeo que o gincana que tem por debaixo dos panos dessa validação se a gente vai utilizar a validação do jinglene tá então se você ver esse aqui esse indígena ele retorna um n tá só que como ele retorna um n a gente precisa passar ele para um tipo específico a gente precisa dar um bind nele passando para validator ponto validez tá aqui no caso é um tipo do valideator Então a gente vai precisar dar um ponto abre e fecha parênteses está isso daqui é como você faz um casting gol e você vai colocar um ponteiro de validator ponto valide tá vendo que ele já trouxe aqui valente que não tenhas valem dentro settins em cash então ele vai fazer um Band para essa para esses Truck aqui do Vale data Beleza então feito isso esse cara aqui na hora que a gente voltar a gente precisa fazer verificar se ele se ele deu certo né Então essa validação ela basicamente vai retornar um campo chamado ok aqui então a gente vai deixar esse aqui no começo aqui no fim quer dizer e a gente vai criar um IFF Então a gente vai validar vai receber duas variáveis aqui então a gente vai receber if validation vamos chamar de Val vírgula Ok recebe de bind. valider tá então a gente já fez aqui o WiFi no fim a gente vai abrir aqui o if para validar se acaso der certo então se alguém vir true é porque deu certo essa esse Band esse Casting beleza e a gente vai inicializar a nossa linguagem Então a gente vai dar um n igual dois pontos igual né é n ponto New né que no caso é esse método aqui que a gente tem Então na hora que a gente salvar ele vai importar aqui o bloqueio os pontos n que no caso vende english tá então a gente vai colocar um Uni ou no caso pode chamar de unicórnio ou algo assim a gente vai vamos colocar o n recebe o t. new beleza e aí que a gente vai vai passar a linguagem english duas vezes então é NN Então se a gente dar um jeito k aqui é um bloqueio assunto translator tá vendo e na hora que a gente inicializar esse cara ele vai retornar pra gente o universo ou Translator que no caso vai ser o n no caso pode ser o NT aqui por exemplo também tá se você preferir então agora a gente vai jogar o valor para dentro desse translate aqui né então a gente vai colocar translate vírgula a gente vai ignorar o erro aqui porque é muito difícil dar erro nesse cara mas se você quiser fazer uma validação aí dentro desse também Mas é muito difícil nem conseguir simular esse erro na hora que eu tentei testar nem consegui fazer então geralmente ignora esse erro tá então você vai dar um nt.
gat translator tá então get translator E você vai passar aqui dentro e n que no caso é a validação que a gente precisa né linguagem a gente precisa aqui nesse caso ele está reclamando porque a variável translate ela já está inicializada Então não preciso dois pontos igual aqui tá na verdade é Trans L aqui beleza então feito isso então agora a gente vai precisar de um cara chamado registro de fogo translations ele vai vir a partir de um pacote chamado n underline translation Tá mas como que a gente faz cortar ele tá a gente vai colocar aqui n translation esse cara tá tô aqui no fim a gente vai abrir e fechar parênteses a gente importar esse cara a gente vai vir aqui vai colocar n translation que no caso é o Williams que a gente criou e a gente vai copiar aqui esse importe tá vamos copiar aqui para ficar mais fácil Vamos até playground aqui vamos vir aqui no fim vamos colar esse cara fecha aspas aqui então a gente vai colocar aqui validator V10 igual os de cima tá translations ponto ou barra no caso n que no caso é o que a gente está utilizando tá então n translation aqui e ele vai pedir quais argumentos aqui dentro né ele vai pedir um invalidez e um Translator que no caso é o que a gente já tem né então a gente vai passar um Val que no caso é o translator daqui de cima que a gente tá utilizando né que a gente já instaunciou aqui em cima porque deu certo então a gente tá dentro do ok, o transli que no caso foi que a gente acabou de inicializar com translator Então a gente tem a nossa função em Nite pronta né então agora a gente pode fazer o resto tá a gente não precisa chamar essa função emite nenhum lugar então agora a gente vai criar uma função para Val Ah tá então vamos chamar ela de validate tá Vale date error user error por exemplo user error Beleza o que que ele vai receber ele vai receber um RR do tipo error ou no caso a gente pode chamar de validation error aqui beleza e ele vai retornar para a gente um ponteira de West error Ou seja a gente vai mandar para esse cara um erro que no caso é o erro que o jinglene que vai retornar da validação e a gente vai converter em rest error que é o objeto que a gente tem de validação de erro beleza a gente vai se lancear aqui um bar Jason e RR que vai ser do tipo Jason and Marshall erro beleza então a gente vai precisar desse cara então aqui no caso Faltou o ponto aqui nesse cara beleza então a gente vai ter Jason marshaltipar pra gente poder fazer uma marcha da tipagem do Jason tá agora a gente vai criar um cara chamado vaar Jason Vale deixa um erro beleza então error aqui e a gente vai chamar esse cara de validation um ponto Vale deixe então a gente vai chamar esse cara de validator Ponto validation errors beleza com isso a gente vai ter as nossas avisos associadas agora a gente vai começar a validar o erro que a gente recebeu aqui por parâmetro para isso a gente vai começar agora os ifs aqui dentro do nosso código tá vou só fechar aqui nesse lado para ficar mais fácil de vocês visualizarem agora a gente precisa validar Qual é o tipo desse erro esse tipo é um erro de validação Então a gente vai fazer o seguinte a gente vai fazer um if errors. s e a gente vai passar o vale deixe um erro que é o a variável de erro que a gente vai receber lá da nossa validação vírgula o nosso Jason error que no caso a gente vai comparar o tipo a tipagem do nosso Vale deixa um erro ela é igual ao nosso Jason error que no caso é uma tipagem de marcha soltar Ou seja a gente vai valer a validar o primeiro o seguinte o erro que tá dando é de o cara ter mandado string no lugar de um número um número de lugar de sangue que no caso é um erro de Marshall se Sim a gente vai simplesmente retornar o erro porque não tem como dar banho nesse erro beleza então a gente vai abrir e fechar aqui Chaves e a gente vai dar um retorne rest e RR New Bad requestrial e a gente vai simplesmente retornar aqui vale e o de Type que no caso basicamente a gente vai estar falando o seguinte cara você enviou o string no lugar de um número o número de um lugar de string assim por diante alguma coisa assim tá One Marshall quando ele tenta dar um macho de Jason para objeto mas dá erro na tipagem de algum Campo beleza e aí ele dá erro primeiro tá então se desse erro a gente simplesmente vai retornar que o campo está incorreto se não a gente vai validar se o tipo do erro ele é igual a validator Valley deixa um erro se o erro ele é um erro de validação Então como que a gente vai fazer isso é o cif da mesma forma erros. as né então ears.
a. s a gente vai colocar quem agora vale deixa um e RR que no caso a variável de erro vírgula Jason validation error que no caso é avalia o tipo do validator Valley deixa um erro beleza se ele for do mesmo tipo quer dizer que o erro que tá dando é de alguma validação que a gente criou lá naquele Band no vídeo do vídeo passado então agora a gente vai criar a nossa o nosso arranque de causa lembra que a gente ficou falando várias vezes de causas as causas causas então a gente Nossa Rede causas aqui dentro então a gente vai criar um error causas aqui a gente vai criar aqui ele vai ser uma Ray de rashie. calses Beleza então ele vai ser uma Rei das nossas causas aqui que a gente vai utilizar a gente vai enriquecer esse objeto essa lista com os problemas que tem na nossa validação para isso a gente vai dar um Ford vai ignorar o primeiro parâmetro que é um índice Beleza vai dar um e igual a range Então a gente vai dar um Range em quem nos erros que deu né Nos quais os erros que a gente Tomou a gente vai validar porque pode ter dado aí em 20 Campos então a gente precisa passar um por um se a gente vai dar um vale deixe um erro aqui no caso é avalia a variável que a gente quer e a gente vai dar um Band porque vai deixar um erro É um tipo erro que dentro só tem uma implementação de string então a gente não pode utilizar ele porque a gente não consegue pegar nada em cima disso então a gente vai dar um casting para um outro tipo de objeto que é objeto que a gente válidou aqui em cima que ele é igual que é validator validation errors Então valideator vale deixa um errors que a gente vai utilizar Beleza então a gente vai dar um fora nessa validação a gente vai dar um casting nesse cara e para cada item para cada item deixar dessa lista a gente vai enriquecer esse que é a nossa lista de erros né então a gente vai criar cada vez aí que a gente vai criar a gente vai criar um um objeto causa aqui né que vai ser do tipo preste erro ponto caos certo que vai ser um objeto do que a gente já tem instanciado e ele vai ter dois Campos messas beleza e vai ter um campo Yudi certo que no caso é o nome do campo que a gente vai utilizar Então vamos só em silenciar esses dois para a gente ficar mais entender o que tá acontecendo aqui né para o campo mestre a gente vai dar um e quem é o e daqui de cima que ele pegou da validação ponto translate certo então ele vai dar um translate no nome do erro para ele pegar uma mensagem mais clara para passar para o usuário né pensando que o transli que no caso é a variável que a gente instalou lá em cima qual a avaliação de inglês né no caso que a gente criou um gatitando as leitor e n aqui em cima né E no campo frio a gente vai dar um e pontofilde que no caso é o campo que deu errado né porque ele fez a validação com esse causas a gente vai dar um errors causas recebe aprende errar por causas no caso aqui é o objeto que a gente já tem sua causa Então a gente vai colocar esse objeto causa dentro dessa lista e passar para o próximo aqui ele vai continuar o fluxo no fim de tudo isso a gente vai dar um retorne West erro ponto New Bad request Vale deixa um erro porque a gente vai poder passar agora ou arri de causas que a gente já tem em mãos agora né então a gente vai passar aqui são exemplo e a gente vai passar o error causas certo que no caso é o r de causas aqui se não for nem do tipo de validation error a gente simplesmente vai retornar o erro como ele já veio então no caso ele vai a gente vai simplesmente falar o seguinte a gente vai dar um return preste erro Bad request né então a gente vai dar um error train two convert Fields é muito difícil cair nesse erro aqui tá mas a gente deixa sempre sempre precaução para ter um um uma válvula de escape aqui né uma forma dele escapar das duas validações se ele não der erro de marcha nem dá erro de validação eu nem sei qual o outro ele poderia dar Tá mas a gente é bom a gente colocar um elsea aqui para se acaso não cair nenhuma dessas duas validações que ele vai começar a dar esse warning aqui falando de que ele não pode utilizar um objeto que não seja ponteiro tá então a gente simplesmente vai vir aqui e colocar que a gente quer apontar colocar o ponteiro desses dois objetos aqui tá Então coloca um e Comercial aqui em cima e um é comercial no Jason vai deixa um erro para ele simplesmente sair esse warning aqui de cima Beleza então temos tudo feito agora vamos utilizar esse cara então você vai vir no nosso Controller dentro de Creed user Beleza então aqui a gente vai ter a nossa validação do nosso campo aqui né então agora aqui no nosso controle a gente vai ter o nosso errorash com uma mensagem chumbada Mas a gente não precisa mais disso né agora a gente pode vir aqui apagar esse cara dá um validation ponto validation que no caso é o objeto a função que a gente criou né E a gente vai passar e RR lá pra dentro que no caso é o erro que a gente criou e agora a gente tem tudo pronto aqui pra nossa validação Vamos testar agora vamos ver se funciona né então toda a nossa aplicação dá um gohanman.