[Música] fala Dev beleza seja muito bem-vindo à nossa nlw Connect o meu nome é Rafa eu sou programador Senior em Python e especialista em desenvolvimento web e eu vou te acompanhar durante esses dias na nossa trilha de Python nlw Como o próprio nome diz é o nosso next level Week o maior evento de programação na aqui na Rocket City em que em alguns dias nós vamos fazer uma aplicação Totalmente completa para acelerar o seu conhecimento em desenvolvimento e também acelerar a sua carreira como desenvolvedor juntos nós vamos construir em apenas três dias uma aplicação completa
relacionada à criação de eventos e a inscrição de pessoas para esses nossos eventos a gente também vai mexer com muita coisa bacana vamos fazer por exemplo um link para que outros inscritos possam atrair mais pessoas vamos fazer também um ranking de Inscrições você vai ver que vai ser uma aplicação muito completa cheia das grandes tecnologias que nós temos no mercado e com certeza vai ajudar bastante no seu conhecimento e na sua carreira nessa trilha em especial você vai conseguir notar todo o potencial que a gente tem na linguagem Python junto com todas as ferramentas mais
utilizadas no mercado e ao final a gente vai ter um portfólio muito completo pro seu aprendizado e também pra sua amostragem No meio profissional lembrando também que não é só isso no final da nossa nlw a gente vai ter sim uma emissão de certificado e também você vai garantir um bônus para você se tornar um aluno aqui na Rocket City então não perde essa oportunidade fica aqui com a gente porque nós temos muitas coisas bacanas para acabar vendo antes da gente ir direto para código eu tenho que dar alguns recados muito importantes para que você
consiga ter uma melhor Experiência e potencializar a tua participação aqui no nosso evento da nlw primeiro recado é nós temos uma aula zero essa aula Ela é muito importante porque vai apresentar todas as configurações básicas e preparar a nossa máquina o nosso ambiente para conseguimos ter assim as ferramentas necessárias para conseguir trabalhar aqui na nossa nlw então é muito importante com que você dê uma olhada sim na nossa aula zero para que a gente Fique exatamente na mesma página um segundo recado é que você acesse o nosso portal da nlw para que assim você consiga
pegar algumas informações necessárias sobre o evento consiga também alguns links de acesso bastante importantes e alguns materiais necessários pra gente ter aqui o nosso evento o terceiro recado é que nós temos uma comunidade muito rica lá no discord lá você consegue se conectar com outros desenvolvedores que também estão Participando aqui da nossa nlw consegue tirar dúvidas apresentar essas dúvidas pros integrantes lá no discord e também consegue mostrar um pouco da tua evolução durante o nosso evento aqui na nlw não se esqueça de fazer um bom Network de trocar ideias e conhecer pessoas novas que estão
ali no mesmo objetivo que você e o último recado é que você também Fique atento com o nosso grupo de WhatsApp Lá você vai receber também alguns avisos alguns links Quando As aulas forem disponibilizadas e também vai conseguir receber o link do nosso sorteio completou todas as etapas maravilha então agora a gente tá pronto para começar essa nossa jornada e completar essa nos nossa missão lembrando também que todo esse material ele é totalmente inédito e exclusivo Desse nosso evento Então fica aqui com a gente e se Programe realmente para conseguir completar todos esses dias o
nosso Material vai ficar disponibilizado até domingo e você completando toda essa nossa missão vai acabar com certeza dando um salto no seu conhecimento e avançando na sua carreira bom então é isso todos os avisos já foram dados vamos começar esse nosso projeto e já vamos entrar aqui direto paraa código então beleza pessoal vamos começar aqui o nosso nlw Connect e já vamos mexer um pouco no projeto eu tô aqui olha no meu vs code e ele vai ser exatamente a Ferramenta que a gente vai utilizar principal paraa nossa construção né E se você olhar aqui
no nosso canto esquerdo eu já tenho uma pastinha chamada init com um arquiv chamado esquema psql aqui e pessoal eh isso daqui é exatamente Olha só um arquiv Minho que vai ter né todos os elementos em banco de dados no caso as tabelas pra gente criar esse nosso esse nosso projetinho de eventos com inscritos então eu tenho uma tabela de eventos uma tabela de inscritos e uma Tabela de eventos link que vai ser o link dos nossos inscritos para divulgar o nosso evento eu quero pessoal que esse nosso primeiro contato seja mais para conseguir definir
o nosso ambiente Então a gente vai fazer toda a configuração de ambiente aqui e eu vou tentar explicar passo a passo para não ficar nada nublado e inicialmente eu já vou querer mexer com um banco de dados você pode pensar pô Rafa qual banco que Nós vai usar Pois é algumas pessoas podem ter problema com instalação no My outras no post eu vou vou utilizar o banco mais simples que a gente tem que é exatamente um skell Light e vamos lá como é que a gente define aqui o nosso skl L né galera a gente
vai dar uma roubada bonita aqui que é o seguinte pega o teu terminal escreve Python 3 você vai entrar lá no cli né no Command Line interface do Python Ou seja você pode utilizar né e comandos em Python Tranquilamente que isso daqui vai rodar numa assim vai rodar de boa né vai rodar de boa E para isso pessoal a gente vai fazer uma coisa aqui que é o seguinte escreve aí olha Import sqlite 3 né Vamos importar a biblioteca de SQL Lite e eu vou fazer o seguinte sqlite 3. conect E aí eu vou dar
um nome de esima PDB Olha o que que vai acontecer a gente criou o nosso banquinho aqui ó ó o nosso banco de dados bonitinho aqui eu vou Apertar control D para sair aqui do meu C do Python e beleza a gente já tem agora né um banco de dados pra gente começar a trabalhar e vai ser Realmente esse banco aqui tá Isso aqui é um banco e vamos lá como é que eu vou mexer em si nesse banco como é que a gente vai interagir com ele vem comigo nessa aba aqui em cima olha
só a gente vai utilizar esse cara aqui olha o de beaver é o cara que eu mais gosto né em relação a interfaces paraa comando de dados né Não para banco de dados perdão e a gente consegue ver que a gente tem por exemplo o de beaver com min que é o um um gerente né para interface com banco de dados e ele pega todo mundo né não precisa pegar o pro né Eu acho que não faz o menor sentido pagar né Por enquanto mas esse community aqui ele faz muito sentido pra gente e vai
ser o que eu vou utilizar né ele dá uma interface de banco de dados aqui caso você já tenha uma um um Outro e sistema né para interface com banco de dados fique à vontade eu vou pegar aqui olha o de beaver e quando a gente abre é isso daqui que você tem Exatamente isso vamos lá como é que eu me conecto ao banco de dados eu vou clicar aqui olha na tomada com mais aqui no canto e vou escolher skite vou dar um next e aqui ele vai pedir né o pef do meu banco
ou seja aonde que esse cara que ele tá no nosso nosso computador eu vou buscar ele aqui Nas minhas coisas p p p Beleza eu vou clicar aqui em test Connection aqui ele vai falar que a conexão deu tranquilo Se é sua primeira vez utilizando o de beaver ou esse tipo de banco ele vai pedir para você instalar um plugin Pode instalar sem problemas e dar um ok clica em finish vai aparecer o banquinho aqui do lado né É exatamente o banco que a gente se conectou expande se você expandir tabelas tables não vai aparecer
nada Então a gente vai colocar o nosso arquivo né de SQL dentro aqui do banco eu vou vir aqui olha em esima PDB com botão direito vou vir aqui em SQL editor open SQL script vai aparecer um editor né aqui e nesse editor a gente vai simplesmente pegar todo o nosso arquivo psql Ou seja eu vou dar um CRL a um Crol C E aí eu vou voltar lá no de beaver né contrl v contrl a para selecionar tudo botão direito Execute Execute SQL script ou então apertar Alt x e beleza né rodei tudo aqui
o meu e o meu SQL se eu vi aqui olha com o botão direito e refresh ou apertar F5 você vai ver que agora né as nossas tabelas estão aqui no banco então eu tenho uma tabela de eventos né que tem o id e o nome uma tabela de eventos link e uma tabela de inscritos configuramos aqui o nosso banco de dados Beleza vou voltar aqui no meu projeto e vamos continuar isso tudo Que a gente tá fazendo né banco de dados Já tá feito eu vou agora e já que a gente tá falando de
Python né criar o meu ambiente virtual Então vem aqui comigo Olha só pra minha aba de cima onde que eu tenho o meu navegador e eu vou utilizar né o virtual Envy para fazer o meu ambiente virtual em Python eu vou pegar esse comando aqui olha aqui né no no pipe né nesse buscador aqui de pacotes do Python e vou Descer colocar aqui olha pip3 eu gosto de instalar né com PIP 3 instalo virtual Envy a minha máquina já tinha né o virtual Envy instalado então a gente já criou tudo né de assim de instalar
as coisas na nossa máquina mas a gente tem que ativar o ambiente virtual para isso eu vou voltar aqui né eu separei até mesmo né lá no p dooc é esse descritivo aqui olha como que a gente cria o ambiente virtual né uma documentação Zinha básica Se eu vir aqui na tabela de Conteúdo e clicar n creating virtual environment ele vai dar um comando pra gente Python traço M ven e aí um caminho né de desejo eu vou fazer exatamente isso aqui tá pessoal vou descer e vou fazer o seguinte olha só Python Eu só
vou colocar um três aqui porque eu quero utilizar o Python 3 traço m venv e eu vou chamar o ambiente virtual de venv Olha que eu criei uma pastinha aqui olha essa pasta pessoal é exatamente o meu Ambiente virtual do Python nota que tem um Python 3 aqui olha um Python 3.8 que é o que eu tô usando para esse nlw não tem nenhum problema você utilizar versões eh posteriores a 3.8 Mas é isso que a gente tem né Eu quero utilizar esse ambiente virtual aqui pra gente trabalhar o nosso projeto E para isso eu
vou eu vou colocar o comando ponto ven bein activate se você notar vai ter aqui olha do lado né uma Flag falando que agora eu Estou utilizando o Python desse ambiente aqui ó ao invés de utilizar o Python da minha máquina geral em si Por que que isso aqui é bom porque aí eu consigo instalar dependências nesse Python que está no ambiente virtual e não ensina minha máquina por exemplo a gente vai utilizar olha só essa Lib aqui ó de p test para fazer os testes unitários Isso vai ser muito interessante pra gente eu vou
copiar aqui novamente Esse comando né PIP install P test vou vir aqui olha Pro meu projeto PIP instal P test eu gosto de instalar com PIP TR e agora ele tá instalando e se você utilizar um outro comando aqui olha no meu ambiente virtual que é o PIP 3 Freeze maior que e colocar requirements.txt né olha o que que vai acontecer ele vai mostrar as dependências que foram instaladas então a gente instalou aqui de dependências o teste e os plugins né que o p test Precisa Exception group Então olha que que interessante né Beleza a
gente já criou o nosso ambiente virtual estamos dentro dele o que que tá faltando agora tá faltando algumas coisas vamos colocar o Git aqui vamos trabalhar com versionamento eu vou colocar um Git eit Pronto agora a gente tem um Git aqui né no nosso projeto nota que todo mundo ficou verdinho mas eu não vou adicionar todo mundo né No nosso eh no nosso repositório em si eu vou criar um arquivo que vai se chamar ponto Git Ignore e nesse Git Ignore e eu vou em primeiro lugar colocar Olha só ven não vou querer o ambiente
virtual não é ele que me interessa é só os pacotes que eu instalei nele porque assim eu posso instalar novamente todos esses pacotes em um outro ambiente virtual então o ambiente virtual não entra nos nossos comits e também pessoal o skima PDB não Vai entrar né a gente tá utilizando skite como um banco de testes então a gente não vai comitar banco feito isso Beleza eu vou fazer mais algumas inserções aqui que vão ajudar um pouco a gente por exemplo eu não vou querer levar comigo o pré-compilados P Cash que às vezes fica aparecendo por
aí E como a gente instalou uma uma biblioteca que chama P test eu também não vou querer né P test cche os caches do nossos dos nossos Testes pronto vou deixar assim por enquanto vou vir aqui no meu terminal Git status Git AD ponto e Git status beleza todo mundo aqui para dentro do Bonde né Git commit vou fazer um commit traço m e vou colocar aqui o nome config starting starting projects beleza fizemos aqui o nosso comit né tudo certinho sem nenhum Problema agora eu vou fazer o seguinte pessoal a já tá quase acabando
as nossas configurações né Eu só vou vir aqui e mostrar uma coisa né eu vou ter um arquivo chamado e run.py esse arquivo vai ser muito interessante porque ele vai ser o início de todo o nosso projeto mas eu vou fazer uma pasta aqui que vai se chamar src né pessoal outra coisa Sempre que a gente fizer uma pasta em Python Vamos colocar um arquivo init dentro dela pra gente Conseguir importar e exportar coisas como assim vou criar um arquivo aqui olha se Hello ponp né e aqui eu vou deixar uma função inha escrita se
Hello que vai ser simplesmente um print Olha só olá mundo né eu vou vir aqui olha no meu run.py e vou fazer o seguinte né Você lembra como é que a gente fazia uma função M em Python if name igual igual a m é desse jeito aqui dois pontos print né geralmente é assim que a gente faz Uma função Main Python eu vou fazer o seguinte from srcc Hello Import se Hello e eu vou utilizar olha só essa função se Hello na hora que eu rodar esse tipo de coisa olha só Python 3 RP né
o Python ele cria né o picche esse pré compomil aqui né que o que o Python utiliza eu não vou querer que fique aparecendo pré-compilados no meu projeto eu quero só usar arquivos.py E para isso pessoal a gente Vai fazer a última configuração aqui no nosso projeto que é configurando o vs code para não ficar me mostrando P cche então eu vou criar aqui olha uma nova pasta chamada ponto vscode e aqui na minha pasta vs code eu vou criar um outro arquivo chamado ser. json deixa eu fechar fechar e aqui no meu SS PJS
vou lançar né um abre e fecha aqui olha só files P exclude aqui ele já completou para mim mas na verdade eu não quero todos esses Elementos eu só vou querer aqui nos meus file exclude e ele exclua por exemplo né todos os arquivos então asterisco aqui na frente de do ponto P C eu não quero os arquivos p c Aí eu vou até colocar uma uma condicional eh when base name só que olha só ele já completou aqui para mim né cifrão base name só que quando o nome base for ponto pai eu também
não vou querer né olha só os arquivos dois underlines p Cche pode colocar o mesmo nome que esse cara aqui ó e olha só ele tá true na hora que eu salvar olha para cá 1 2 3 salvei pronto sumiu P Cash se eu voltar aqui olha com false deixa eu colocar aqui ol false 1 2 3 salvei PC volta então eu vou tirar né o p cche salvei tirei pra gente não ter isso aqui ficando aparecendo né pra gente no projeto e a última coisa que eu vou tirar vai ser né asterisco ponto e
p test underline cche eu vou colocar como True Então beleza fizemos isso aqui e agora eu acabei né as minhas configurações iniciais eu vou vi aqui no meu terminal Git status Git AD Ponto beleza adicionei todo mundo Git status eu vou dar um Git commit traço m config finishing first Project configs deixa eu vir para cá e beleza agora que a gente já terminou as Configurações todas do nosso projeto vamos agora criar toda a nossa api e já começar a mexer também no banco de dados eu quero que a gente mexa nesse nosso encontro nessas
duas pontas tanto na utilização da Framework para criar né um servidor em http e também pra utilização do nosso projeto em banco de dados e vamos lá a a Framework que a gente vai utilizar aqui pro nosso projeto vai ser exatamente é o flesk esse cara aqui olha a gente já tá na Versão 3.1.0 do flesk né e é uma Framework bem bem leve e bem tranquila da gente mexer com servidores http eu vou copiar eu já tô aqui né no no pipe o nosso buscador de pacotes aqui do do Python e eu vou copiar
esse comando E aí eu já vou vir aqui para baixo e no meu terminal Lembrando que eu estou né no meu ambiente virtual eu vou colocar né esse PIP install flesk só vou colocar aqui o PIP 3 para instalar com Ele né né e beleza a gente acabou de instalar aqui né a nossa Framework para mexer com requisições http e vamos configurar agora essa parte né do Servidor http e vamos ver como é que isso aqui fica no nosso projeto bom no nosso na nossa aula passada a gente viu que a gente colocou né esse
nosso arquivo aqui de se Hello eu agora né vou apagar ele né ele já cumpriu aqui o seu papel e eu vou criar aqui na pasta src uma nova pasta chamada Main e vamos lembrar sempre que a gente criar uma pasta em Python cria um arquivo init.py perfeito e agora aqui dentro da pasta init eu vou na pasta Main perdão né eu vou criar uma outra pasta chamada server Isso aqui vai ser uma pasta que a gente vai separar para colocar todas configurações necessárias pro nosso servidor em si eu vou criar uma outra um outro
arquivo aqui dentro que é o nosso Init PP né a gente sempre tem que ter criou uma pasta criou um arquivo init.py e eu vou criar aqui também né um arquivo Aí sim em Python que vai chamar server.py beleza e agora vamos lá vamos criar o nosso servidor http isso aqui pessoal de criar servidores ttp em flesk é simples e bem direto e fácil from flesk e Import flesk com letra maiúscula e a partir disso eu vou ter um um app que é igual a flesk certo com esse nosso parâmetro dois underlines Name aqui dentro
Olha só em t a gente já terminou de criar um servidor http é só isso se eu vier aqui olha na minha no meu arquivo run.py eu vou fazer o seguinte em vez de pegar esseo que a gente acabou de deletar né eu vou eh voltar e pegar esse meu App lá na no arquivo server que eu criei então from srcm pserver pserver Import app e a partir disso eu vou colocar o meu Serv para rodar então Run certo eu vou falar Por exemplo que o meu host ele vai ser 0.0.0 que é né endereço
de local host na minha máquina eu vou falar também que a minha porta vai ser a porta 3000 e eu vou ativar o modo debug por enquanto pra gente trabalhar né em ambientes de teste e se eu só fizer isso pessoal e chegar aqui e mandar o comando Python 3 run.py né que é o nosso arquivo Run aqui olha só servidor já tá rodando né em tese é só isso que a gente precisa realmente para rodar um servidor Http A diferença é que esse servidor aqui ele não tem rotas e aqui que a gente vai
mexer um pouco né a gente vai agora só organizar Aqui uma estrutur zinha de pastas pra gente ter né é uma rota né e a gente conseguir já deixar isso tudo pronto vou fechar aqui comtrol c e vamos criar uma rota só para fazer também né a nossa comunicação com esse projeto beleza antes disso eu vou vir aqui Git status Git AD ponto Git Status beleza tá todo mundo aqui né na minha Branch Master todo mundo que eu acabei alterando e criando Vou colocar aqui olha Git commit traço M deixa eu limpar o terminal vou
colocar só config na verdade não é um config né uma feature então Fit implement http server with flesk beleza criamos aqui o nosso comit né tudo certinho agora lá vamos criar uma rota é de uma maneira bem básica aqui né eu vou Fechar eu vou só abrir aqui a minha pasta Main né e eu vou separar na verdade as configurações do meu servidor das configurações das minhas rotas então eu vou criar uma nova pasta aqui chamada routes e nessa pasta routes eu vou colocar um arquivo init PP claro né criou uma B em Python cria
um arquivo init PP eu vou criar um arquivo aqui também que vai ser minha route PP nesse meu route Mop e vamos colocar uma rota básica aqui mas para isso eu Vou utilizar alguns artifícios from flask eu vou importar um elemento que chama blueprint e um elemento que chama Jon F pra gente conseguir retornar o Jon aqui nas nossas requisições http certo eu vou criar um agregador de rotas como se fosse uma marca para todas as rotas em que eu estiver eh necessitando aqui a gente pode até trocar esse nome routes aqui ó rout né
para por exemplo eu falar que são todas As rotas de eventos todas as rotas relacionadas a eventos vão estar agregadas aqui como é que eu faço isso eu vou colocar aqui olha e event rout BP é igual a uma blueprint esse elemento aqui olha de blueprint em que eu vou dar um nome né para para Esse identificador aqui que Vai ser um event route E aí eu vou colocar o parâmetro name aqui dentro ou seja esse cara aqui ele vai vai ser um agregador de rotas ou seja se eu colocar aqui olha @ event BP
eu posso criar uma rota que é o route e definir ela aqui ou seja eu vou colocar um barra event por exemplo e vou falar que o method os méthodos né de de acesso no caso vai é só um que é o post e essa parte aqui olha do de eu dedicar um método é exatamente de eu Fechar né minha rota eu vou ter na verdade aqui uma rota de criação de eventos né Então olha só aqui eu já tô definindo uma rota barra event com o método post feito isso eu vou colocar aqui né
um uma função que vai se chamar Create new event e aqui só para você direto return Jon F né e eu vou colocar aqui um retorno de um Jon que vai ser um ST aqui eu vou colocar um status code de 201 Então é só isso daqui que a gente vai ter para uma criação básica de uma rota feito isso eu vou vir aqui olha lá nas minhas configurações do servidor né e eu vou importar esse agregador de rotas aqui olha então aqui em server eu vou from src Main pon routes olha vamos caminhando né
ponto event Import event rout BP feito isso app. register blueprint event rout BP Ou Seja eu registrei o meu agregador no meu servidor né agora ele tá certinho aqui e quando eu faço né Essa e esse registro significa por exemplo que se eu criar até mesmo uma outra rota né olha só criei uma outra rota aqui Vou colocar até um dois aqui vamos falar que esse cara aqui é um get por exemplo e significa que por estar dentro do agregador né de de rotas ele também já está cadastrado essa outra rota aqui get está cadastrada
aqui no Meu servidor então é um artifício muito interessante você trabalhar com as blueprints do flesk beleza Eh isso aqui foi só título né de curiosidade eu vou tirar esse cara né eu vou dar um save aqui e a partir disso né vou rodar o meu servidor Python 3 run.py Beleza o servidor está rodando aqui né e agora né eu tenho uma rota aqui dentro pessoal para a gente conseguir interagir com o nosso servidor http eu vou fazer o seguinte eu vou Utilizar o Postman para isso né Ele é na verdade um uma Interface para
você conseguir fazer comunicação http de um jeito mais simples né olha só essa aqui é a carinha dele né E aí fica mais fácil da gente acabar utilizando né fazendo testes no nosso servidor mas assim caso você já tenha eh o a sua Interface para requisição http fique à vontade eu vou abrir aqui o meu Postman Beleza beleza ele já tá aqui na nossa Frente né Eh tá com um zoom Deixa eu tirar um zoom aqui beleza se você nunca mexeu com Postman eh você vai abrir ele no seu computador e vai aparecer essa interface
aqui ó eu vou clicar em mais aqui aqui né para fazer uma nova requisição http e vamos lá eh pra gente fazer uma requisição http aqui eu tenho que colocar né a URL aqui do meu Servidor ou seja já que eu tô rodando em local host vai ser o http dois pontos barra barra Local host né A minha máquina na porta 3000 que a gente definiu e a gente tem n essa rota cadastrada aqui olha que é o Barra event então barra Event E lembrando que o método que a gente definiu é o post Então
vou trocar aqui ol de get para post né Deixa eu fechar essa parte aqui pra gente ter mais espaço e aí eu vou bater aqui no botão de send né vou enviar minha requisição e beleza apareceu né Estou aqui e o próprio servidor do flesk Ele mostrou aqui pra gente né que teve uma requisição se eu fazer várias requisições Olha só vou ficar apertando aqui o post várias vezes né aqui olha tá aparecendo outras e informações aqui de requisição Então é só isso mesmo né a gente fez uma rota e agora tá se comunicando né
com o nosso sistema bem tranquilo eu vou agora minimizar o Postman né vamos deixar essa estrutura desse jeito aqui uma pasta que chama routes e outra que é o meu servidor em Si e agora eu vou e comitar né Isso tudo que a gente acabou fazendo então Git status Git AD ponto e eu vou colocar aqui Git comit traço M Fit implementing first route só isso só isso Beleza eh agora a a gente já mexeu nessa ponta aqui do projeto né a gente já conseguiu definir um localzinho um é um localzinho mesmo né pra gente
conseguir mexer com as nossas requisições http agora vamos mexer na na nossa outra ponta do projeto que é Exatamente aonde a gente vai se comunicar com o banco de dados e eu quero trazer aqui pra nossa roda esse carinha aqui olha o SQL alkem a gente detalha muito bem essa nossa ORM lá na nossa formação de Python aqui da Rocket City mas a gente vai trazer um pouco do gostinho dele aqui pra nossa nlw né É É a RM assim das mais conhecidas que a gente tem em eu acredito que faz sentido a gente falar
um pouco dela Aqui eu já tenho aqui olha o link no pipe pra gente fazer o download né do desse pacote do skl alk né já tá na versão 2.0.37 eu vou copiar esse comando né o PIP install SQL alk vou vi para cá e colocar aqui olha PIP Install skl alkem e eu vou colocar o meu PIP 3 né Eu gosto de instalar com PIP 3 beleza Tá instalando tudo instalou vamos lembrar também pessoal que a gente tá Instalando tudo no nosso ambiente virtual ou seja eu eh tenho né as minhas dependências aqui no
meu arquivo requirements Então olha só eu posso muito bem vir aqui PIP TR né que é o PIP lá do meu ambiente virtual E aí eu vou fazer o comando freezy colocar o maior que rext né E olha só quando eu faço isso eu recarrego e atualizo as dependências aqui do projeto então nota o flesk tá aqui né e deixa eu ver o skl que a gente Acabou de instalar tá aqui então vamos fazer né Esse comando e agora eu vou e fazer um commit só em relação a isso né Git status Git AD pon
no requirements Git status beleza e agora eu vou fazer um Git comit traço m e vou colocar aqui olha config updating requirements.txt beleza tudo certinho Vamos agora voltar aqui pra nossa Construção né e mexer nessa parte de interação com o banco de dados vamos lá agora eu quero que a gente seja até um pouco detalhista no skl alkemy eu vou criar aqui olha uma nova pasta que vai se chamar Model e se você conhece um pouco da estrutura mvc você sabe que a pasta Model é onde que a gente coloca todo o todos os nossos
elementos de comunicação com o banco vamos lá eu tenho que mostrar pro Meu projeto aqui em Python que existe as tabelas em que a gente criou ou seja existe um banco de dados né E nesse banco de dados existe a tabela eventos a tabela inscritos e a tabela eventos link né o projeto tem que saber da existência desses elementos e aqui na nossa pasta models com o skq alkem a gente vai declarar que isso daqui existe Então pessoal eu vou fazer o seguinte aqui na minha pasta models Acabei de criar uma pasta o primeiro Arquivo
que eu crio qual como é que ele chama é o meu init.py né você vai sair dessa dessa nlw lembrando disso criou uma pasta criou um arquivo.py E aí eu vou fazer o seguinte eu vou criar uma pasta aqui olha que vai se chamar configs né em que vão ser as configurações que a gente vai ter é para acesso do nosso banco de dados é parecido aqui com a pasta server da nossa da nossa pasta Main né a gente vai separar sempre um lugar para Configurações em geral e de novo o que que a gente
qua quando a gente coloca uma nova pasta em Python isso mesmo arquivo init.py Beleza beleza eu vou criar aqui olha na minha pasta configs um outro arquivo que vai ser chamar base e o ponto P esse nosso base aqui olha vai ser onde que a gente vai criar uma base declarativa ou seja tudo que eu for declarar que existe no meu banco de dados vai acabar Passando pela minha por um elemento de base ou seja eu vou importar SQL PM eu vou importar né o meu declarative base eu vou criar essa base de declaração né
A partir dessa declarative base então isso aqui é uma base de declaração né eu vou agora vou Minimizar aqui né eu vou criar uma nova pasta aqui olha na pasta de mods que vão ser as minhas enti as minhas entidades de novo criou uma pasta em Pyon criou um arquivo in p p beleza e agora aqui a gente vai fazer o seguinte o que que são as nossas entidades são representações em classes dos elementos que nós temos nosso banco de dados então é esse arquivo esima psql vai ser muito importante pra gente parear com as
nossas entidades Como assim aqui na parte de de entidades eu vou criar né olha só um um outro arquivo né em que eu vou chamar na verdade Opa de eventos Então Olha só eventos ppai e essa esse arquivo eventos a gente vai ter na verdade uma classe que se chama eventos e essa classe vai ser pareada com essa minha tabela de eventos Eu tenho que declarar pro pro pro Python que existe né esse tipo de elemento e já que eu tô falando de declarar eu vou Antes de eu começar minha classe né eu vou importar
minha base declarativa então from src P Models P configs Pbase Import minha base declarativa Agora sim eu consigo ter uma classe que se chama eventos colocando né A minha base declarativa ou seja declarando que eu tenho isso e melhor ainda eu consigo colocar Olha só table name igual a eventos ou seja agora estou falando realmente que a minha classe eventos ela tá relacionada com a minha tabela de eventos no meu banco e agora eu tenho também que declarar né O que que que que ele que que ele possui né de Campos ou seja de colunas
eu tenho id e eu tenho nome então eu vou vir aqui né Vou importar os tipos em SQL alkem ou seja from SQL alkemy Import colum n Vou importar o tipo coluna o tipo string o tipo integer e aqui eu vou falar o seguinte Olha o ID ele é um elemento de coluna certo vou colocar que ele é do tipo integer e agora consigo colocar outros atributos também que é o meu primary Key Ele é uma chave primária certo e eu também tenho um auto incremente que é o true então eu tenho isso daqui né
pra declaração da minha coluna id e agora eu tenho para minha coluna nome por exemplo que ele é só uma coluna em string certo e eu vou falar que ele não é nulo Então olha só eu já consegui né declarar tudo que eu precisava essa classe ela representa e a minha tabela de de eventos totalmente com todas as Informações que eu preciso Ah Rafa bacana demais vamos fazer mais um pra gente fixar isso aqui vamos eu vou vi aqui e vou criar né uma entidade chamada inscritos deixa eu trocar aqui olha inscritos ppai beleza e
na minha tabela de inscritos eu vou fazer a mesma coisa que eu fiz aqui em eventos vou até ser um pouco mais ligeiro aqui já já copiar essa importação aqui olha da minha base Declarativa beleza e eu vou fazer o seguinte também eu vou importar esses tipos aqui todos né do skl alim Então beleza eu só vou colocar aqui também uma outra um outro tipo que a gente vai utilizar que é o FR Key né A minha chave estrangeira porque se você você notar aqui olha a gente vai ter o evento o ID do evento
né evento ID que ele é uma chave estrangeira a gente vai precisar disso mas é bem tranquilo tá E aqui na parte de inscritos eu vou ter uma classe que vai ser os meus inscritos certo os inscritos do nosso evento e aqui né claro que a gente vai ter a inserção da nossa base declarativa feito isso eu vou falar que o meu table name é igual a inscritos e agora vamos mostrar né tudo que a gente tem aqui nessa nossa e nessa nossa classe né se você tiver com Dúvidas pode vir aqui e ir comparando
né com a sua tabela de inscritos eu já vou de uma maneira mais direta colocando aqui né Então deixa deixa eu vir aqui para inscritos beleza ID ele é uma coluna certo que vai ter elementos de integer é uma primary Key né E também é tem um auto incremente eu vou colocar também a coluna nome certo que é uma string e ela não é nula na verdade é Nullable false beleza olha como é que fica bem descritivo o que que a gente tá fazendo aqui né eu vou ter um e-mail que vai ser uma coluna
certo que vai ser uma string e eu vou deixar e como nullable false né você não pode deixar esse campo nulo tem que ter o e-mail do [Música] inscrito e eu vou colocar também né uma coluna link que é por exemplo por qual link que ele acabou vindo né que ele acabou Entrando né se inscrevendo vou colocar aqui ol col string né ele pode ser nulo Então por Def esse nullable vai ser true aqui se eu até quiser colocar aqui por exemplo olha só n né eu posso colocar isso aquii e evento ID é igual
a coluna integer E aí eu vou colocar né esse meu tipo aqui olha forine Key E aí eu vou falar que ele vai se Relacionar é esse evento ID com a minha tabela eventos certo Olha só eventos pid é igual quando a gente tem e aqu aquele join né join E aí a gente coloca o on ou seja isso daqui é onde que a gente tá fazendo né a nossa igualdade ou seja o elemento ID vai ser juntamente utilizado com ev evento ID beleza e agora tá tudo certinho eu vou vi aqui no meu terminal
e eu vou fazer o meu commit então Git status Beleza Git AD ponto ok Deixa eu ver tudo que a gente fez aqui Git status Ok eu vou fazer agora um commit disso tudo Git commit traço M vou meter um feit aqui e fala implementem eh models entities pronto eu vou deixar Por enquanto só essas duas entidades aqui de eventos inscritos e logo mais pro futuro a gente vai implementar né a nossa próxima tabela que é é essa daqui olha de eventos link mas eu não vou colocar ela por agora vamos deixar só isso Daqui
vou fechar esses caras né Deixa eu Minimizar todo mundo e só abrir de novo aqui a mods vamos agora criar a nossa conexão em banco vamos começar já a interagir de fato com o nosso banco então para isso eu vou vi aqui olha na minha pasta de configs e eu vou colocar um novo arquivo que se chama Connection Connection PP e aqui a gente vai ter toda a nossa classe para organizar conexão com o Nosso banco eu vou chamar essa minha classe né de DB deixa eu colocar aqui DB Connection handler né um gerente de
conexão eu vou colocar aqui um método Construtor né que é esse nosso init para eu colocar alguns elementos e o primeiro deles vai ser um self eu vou colocar dois underlines para falar que é privado aqui em Python né vai ser uma Connection Deixa eu tirar o mous daqui uma Connection string ou seja uma string de conexão e a gente precisa dessa string De conexão para declarar alguns elementos do nosso banco de dados como nós estamos falando de um e sqlite fica mais fácil eu vou colocar aqui esse aqui Light dois pontos e TR se
Barras esima PDB que é né o nosso banco de dados a gente mostra no skl aonde o banco de dados está e agora eu vou criar um mecanismo né uma Engine de conexão para isso eu vou vir aqui olha from SQL alkemy Import Create Engine e eu vou criar um método e agora ele vai ser um método privado que eu vou chamar de Database Engine vou colocar um selfie para falar que eu tô no contexto dessa classe né E aí eu vou ter um Engine que é igual a um Create Engine colocando aqui olha a
minha Connection string né string de conexão que a gente declarou em cima e a partir disso eu vou retornar esse meu Engine e eu vou fazer O seguinte eu quero que é esse mecanismo né esse Engine de de conexão ele já venha logo quando eu declarar um objeto né do meu da minha classe nesse caso eu vou vi aqui olha self dois underlines Engine é igual a self P Create Database Engine Ou seja eu tô tratando ele como um atributo privado no meu projeto logo quando eu tiver um objeto né da minha classe por exemplo
obj na minha classe esse Engine aqui ele já vai ser criado porque ele tá no meu Método Construtor e o método construtor é o primeiro a ser chamado quando a gente cria um objeto OK agora eu vou criar uma sessão pra nossa conexão em banco de dados O que que é uma sessão pessoal sempre que eu for mexer com o banco em si a gente vai trabalhar com sessões você abre uma sessão dentro dela você faz a sua busca a sua inserção a sua alteração de dado e depois você fecha aquela sessão e Ok Acabou
de mexer né no seu banco de dados nos dados em que são necessários a gente sempre vai abrir essa sessão meio que como um espaço permitido para você alterar buscar ou fazer qualquer tipo de interação com e os dados que estão lá mas antes de eu fazer isso eu vou eh mostrar um conceito aqui que vai ser muito útil pra gente em Python só deixando aqui explícito e essa sessão eu pego lá em SQL a.orm né e eu importo session Maker só que vamos deixar isso aqui de stend by por um segundinho beleza e eu
vou pegar Olha só um novo arquivo aqui na raiz mesmo eu vou colocar Case pon P porque eu quero te mostrar esse caso aqui que vai ser muito interessante eu vou criar uma classe que ela vai se chamar minha classe né vai ser só isso aqui sem muito Rigor em toda classe de Python existe dois métodos especiais e são esses métodos especiais que eu quero te mostrar porque eles vão fazer todo Sentido pra gente eu posso ter Olha só um enter vou colocar um self aqui e aqui nesse enter eu vou colocar um print né
simplesmente colocando um entre e eu tenho um outro método especial que se chama Exit né vou colocar um self para falar que eu tô no contexto dessa classe aqui mas eu vou colocar também uns outros elementos esse daqui são cartas marcadas né que é HC Type HC Val e um outro cara aqui que é o deixa eu pegar aqui é XC under tb né E aí eu posso colocar aqui um outro print falando olha só sair pô Rafa para que isso daqui por que que tu tá utilizando né esse enter e esse Exit porque que
eu posso na verdade fazer uma manipulação da minha classe que é o seguinte eu vou tratar Olha só with é um contexto né eu tô colocando minha classe dentro do IF as eu vou colocar MC Né isso aqui não é de de de de funk não tá Mc é minha Classe e aí né eu vou colocar Olha só um print aqui dentro estou aqui dentro e olha só que que vai acontecer se eu rodar aqui olha Python 3 cas.pi Olha só entrei estou aqui dentro e saí Ou seja eu consigo Quando eu tiver uma classe
sempre que eu entrar num wif fazer com que a execução do enter seja causada né causar isso daqui e ao sair o Exit ele sempre é utilizado né quando eu saio desse wif aqui então olha que esse Print e esse print Eles veam vieram exatamente na frente e no final do estou aqui dentro Isso vai ser muito interessante pra gente Pessoal justamente porque aí eu consigo automatizar a criação das minhas sessões eu entro na minha sessão faço o que eu preciso no banco e depois fecho saindo dela eu vou deixar esse Case ponp aqui eh
no nosso projeto só para ilustrar mesmo o que que eu quero fazer na minha eh Na minha classe de conexão feito isso eu vou vir aqui olha é src models config Connection né e agora vamos continuar a criação né dessa nossa classe de gerência de banco de dados e dessa vez eu vou utilizar deixa eu abaixar aqui só para não dar problema pra gente deixa eu limpar eu vou usar esses conceito que a gente acabou de ver Então olha só Def do underlines enter dois underlines vou colocar um self aqui certo e eu vou olha
só fazer o seguinte Session make é igual a session Maker bindan né vou fazer um bind com o meu mecanismo de conexão Então olha que interessante né eu tô criando a minha são com a o mecanismo de conexão que coloquei né e feito isso selfie ponto ah eu tenho que colocar aqui olha só eu vou fazer uma jogada bem interessante aqui também self session igual nonone eu vou começar a sessão zerada feito isso eu vou ter o self P session igual a session make né Vou criar a minha sessão ou seja aqui tava como None
que ele começa na hora que eu entrar minha session vai mudar né E aí eu vou retornar return self Ou seja eu vou retornar todo o contexto da minha classe para que dentro do wif eu consiga utilizar o que eu precisar da minha classe isso vai ficar mais claro logo em seguida mas feito isso eu vou ter também né o meu método especial que é o Exit E aí eu vou ter olha só self HC Type HC Val sct tb se você deve estar até se perguntando o que que são esses HC aqui isso daqui
esc é de Exception são erros que a gente pode pegar ao sair eh do meu contexto né do meu with então eles ficam armazenados aqui caso você queira ter um tratamento de erros melhor no seu código você pode utilizar esses caras sim né aqui a gente não vai mexer com isso mas o que eu vou colocar aqui No meu Exit vai ser o seguinte se aqui no meu enter eu estou criando a minha sessão aqui no meu Exit eu vou fechar a sessão close e agora a gente tem a nossa classe né ficou até um
pouco elegante para eu ter a minha conexão a minha gerência de conexão em banco de dados como é que eu testo uma coisa dessas né o a minha conexão em si eu vou fazer uma inserção na minha tabela de eventos Vamos criar um evento assim de boa mesmo vamos criar Um evento eu V fechar aqui né Deixa eu Minimizar todo mundo e abr só pasta mods aqui PR gente ter ações no nosso banco a gente vai separar uma outra pasta que vai se chamar repositories olha só que ficou até com um simbolozinho né e repositories
é onde que a gente coloca as nossas ações em bancos de dados então eu já vou lançar aqui olha um init.py de novo criamos uma pasta em Python que que a gente cria um init.py e a partir desse dessa Nossa Pasta de repositórios eu vou fazer o seguinte eu vou criar olha só a gente tem uma entidade de eventos né que é o nosso eventos eu vou criar um eventos underline repository PP Então a gente vai ter Nossa Na verdade eu criei uma pasta né é um arquivo pera aí New file eventos repository PP Beleza
e como é que a gente vai fazer Essa nossa classe cara vai ser bem tranquilo né para inserir coisas Olha só vamos pegar primeiro a nossa classe de conexão com bancos então from src pmel p configs p Connection Import DB Connection handle e eu vou pegar também a minha entidade de eventos então from s rcms penti eventos Import eventos vou ter aqui olha Class eventos repository beleza e eu vou agora fazer um método que ele vai ser o insert né eu Vou inserir e lá no meu eventos E para isso para eu ter essa minha
inserção eu vou colocar um selfie aqui só para falar que esse método está na minha classe né tá no mesmo contexto e eu vou ter um event underline name um nome de evento E aí eu vou retornar aqui né um None vou colocar essas tipagens zinhas aqui em Python n esses Type hints aqui para orientar a gente e olha só agora vai ser o interessante como que a gente Vai tratar isso daqui tudo vamos entrar no meu contexto né with DB Connection Hand deu S DB né Então olha só quando eu entro e faço essa
jogada aqui eu tô criando a minha sessão em banco de dados né eu vou colocar um try e um accept Exception Exception vou colocar um Peas aqui primeiro né e eu aqui olha new Event vai ser um novo evento certo tal que o nome do meu evento vai ser né O Event name que a gente definiu que a gente chamou aqui né a nossa o nosso método e eu vou fazer o seguinte Olha só como eu estou utilizando esse DB aqui e como o meu DB Connection handle ele está retornando no selfie significa que eu
tenho acesso a tudo que essa minha classe tem né Ou seja eu venho aqui olha com esse DB né E vou colocar ponto session Poned evento esse novo evento aqui ou seja eu vou adicionar a minha sessão o novo evento E aí eu vou completar e vou falar o seguinte é isso tudo que eu queria fazer no meu banco de dados então DB session pon comit né a gente faz um comit no banco né É mais ou menos isso daqui e se der errado se der um um Exception ou qualquer situação aqui que não for
e do nosso agrado né se der um erro eu vou fazer o seguinte DB P Session P rollback eu vou voltar ao banco no estado anterior de eu ter feito qualquer coisa né e eu vou levantar novamente né A minha exceção excep Beleza então olha como é que fica bem tranquilo essa nossa inserção em banco de dados né cria um novo evento adiciona ele na minha sessão e comita né Beleza É isso mesmo que eu quero fazer pô Rafa e como é que a gente vai rodar isso daqui para realmente inserir no banco e ver
se tá tudo certo né vamos lá Pra gente testar isso daqui eu vou fazer o seguinte em primeiro lugar eu vou abrir o de beaver Espero que você tenha lembrado da última aula né o nosso debever ele é o nosso Olha só o nosso gerente de banco de dados não gerente né na verdade é uma interface de banco de dados né eu vou fechar aqui isso tudo que a gente abriu na nossa última aula minha conexão tá aqui né e eu tô aqui olha na minha tabela de eventos deixa eu ampliar um pouco pra gente
em que eu Tenho o id e o nome do evento né Beleza eu vou colocar um evento aqui a partir desse código aqui que a gente acabou criando mas eu não vou rodar o projeto todo para rodar essa parte de código eu vou rodar essa parte de código aqui em testes unitários como Rafa que tu vai fazer um negócio desses lembra que a gente instalou em algumas horas em algumas aulas mais atrás na verdade no nosso último encontro né E essa Lib aqui ó do P test vai ser ele mesmo que a Gente vai utilizar
tá ele mesmo deixa eu fechar aqui olha o requirements PTC eu vou fazer o seguinte aqui eu vou criar uma um arquivo bem parecido né aqui na minha pasta de repositories com o meu event repository Eu só vou colocar aqui no final underline teste Pera aí que faltou um t deine teste o p test ele reconhece todo mundo que Termina com underline Test e mais do que isso pessoal ele consegue verificar executar todas as funções que comecem com teste na frente então Olha só eu vou fazer um teste de insert eventos né vou colocar um
PES aqui por enquanto certo V fazer o seguinte vou importar o meu eventos repository Vou importar isso daqui ó Então olha só aqui na minha parte de de arquivo de teste eu Vou colocar from Opa from ponto event repository Import event repository beleza aqui eu vou fazer o seguinte olha só event underline name é igual a evento teste certo e o meu event repositório repo né que eu vou colocar aqui de um modo bem íntimo eh vai ser uma Instância da minha classe de repositório e feito isso eu consigo livremente vir aqui olha em event
pon Insert colocando o nome do meu evento pô Rafa bacana bacana E agora como é que eu rodo essa fha aqui olha vamos lá eu vou deixa eu Minimizar um pouquinho para Bele eu aqui no meu terminal ainda assim no meu ambiente virtu pesso que a gente tá instalando tudo colar aqui p test traço S traço v e vamos caminhar até esse arquivo olha só src Model repositório event repository underline teste.py eventos repository Teste.py beleza eu rodei aqui olha e apareceu né o teste unitário em si rodando né e ele falou passou ou seja o
que eu acabei de fazer aqui deu não apresentou erros né ele deu um passed aqui ó e se eu for aqui olhando no meu banco de dados né você deve estar pensando pô Rafa mas não apareceu nada né O que que aconteceu aqui vamos lá botão direito refresh e evento teste tá aqui olha eu consegui fazer isso então a junção né dessa minha conexão com todo Esse nosso mecanismo aqui né de e de inserção ele deu certo pra gente conseguir rodar o nosso projeto eu posso até vir aqui olha e colocar por exemplo evento teste
do e a partir disso Olha rodando aqui de novo ele vai falar né olha passou se você achou algum tipo de erro provavelmente esse P daqui ele não vai aparecer vai aparecer o erro aqui na sua frente então você pode dar uma olhada aí no seu projeto que talvez tenha algum Tipo de erro né mas é exatamente isso que a gente tem tanto que se eu voltar aqui olha no meu b e recarregar né vai aparecer novamente né um outro evento de teste que a gente acabou inserindo nó Rafa bacana e como é que fica
agora por exemplo a gente fazer uma seleção uma busca lá no nosso banco de dados isso não é difícil a gente vai chegar aqui olha se eu tive um insert agora eu vou ter um select evento Vamos colocar Select né Desse jeito aqui Vou colocar um selfie para falar que esse método está no contexto dessa classe e vou colocar aqui olha vírgula event name que vai ser uma string e ele vai retornar né um elemento de evento vou colocar Olha só if DB Connection Hand SDB vou criar uma são né E aí eu vou conseguir
fazer o seguinte aqui é porque a gente não vai fazer uma inserção ou uma alteração no banco então Não precisa necessariamente de fazer um rollback né rollback Ele é mais recomendável caso a gente for fazer uma inserção uma alteração ou uma deleção no nosso banco como aqui a gente tá fazendo busca eu posso vi e falar data igual eu vou abrir esse cara aqui olha só para eu ter um espacinho mais no meu projeto e poder usar espaço Como assim eu vou colocar DB session né a sessão que a gente abriu aí por estar utilizando
esse Carinha aqui eu consigo dar um enter eu vou colocar que eu vou querer fazer uma query lá na minha tabela de eventos certo eu vou fazer um filtro em que eventos Ponto nome tem que ser totalmente igual ao nome do meu evento certo e aí eu vou fazer um filtro de one or nonone retorne um ou Nada feito isso return data e essa aqui é a nossa busca nota pessoal que assim tá muito bem Descritivo que a gente tá fazendo aqui tá muito legível né a gente tá tratando tudo aqui de uma maneira bem
eh racional em si vou vir aqui agora no meu repositório de teste né e eu vou buscar e um evento em que a gente deseja Para eu não ter que ficar rodando esse cara aqui eu vou fazer o seguinte né eu vou querer rodar só uma busca eu vou vir aqui em cima né Import p Test e eu vou colocar aqui olha @pytest.mark vamos marcar esse cara e eu Vou querer falar skip né ou seja pule esse teste eu vou colocar insert em DB Ou seja eu vou pular esse essa execução aqui porque ela faz
uma inserção no banco de dados a gente não quer isso por agora mas eu vou ter Olha só um outro teste unitário que vai ser um teste select events né E vou colocar isso desse jeito aqui e essa seleção eu vou fazer o seguinte eu vou buscar Exatamente esse nosso evento dois aqui que a gente fez Né eu vou colocar event underline event underline repo é igual a evento repository e eu vou colocar aqui olha event é igual a Event Rep P select event tal que ele tem o mesmo nome desse cara aqui e agora
eu vou fazer dois prints né eu vou printar esse event que apareceu aqui eu vou printar esse event pon name na verdade é ponto nome né ponto nome então nota que é isso que a gente Vai ter aqui olha pro nosso arquinho de teste unitário eu gosto de deixar ele geralmente do lado aqui olha do arquivo justamente para eu ver o que que tem e o que que não tem teste unitário Então feito isso desse jeito né e no nosso projeto eu vou fazer de novo aquele comando P test traço S traço V src mod
repository eventos repository test beleza é aqui deu um um errinho ah Sim a gente vai corrigir isso daqui e Olha só foi até interessante mostrar esse erro só para mostrar mesmo quando que isso daqui falha né Eh se a gente vi aqui para cima olha só em primeiro lugar o teste do insert ele mostrou aqui olha skip it né a gente pulou esse teste porque a gente colocou essa marcação e aqui e ele printou né um um elemento que mostra é a nossa busca em banco de dados eu só me esqueci e agora Tenho que
pedir perdão por colocar né esse cara aqui olha no event repository tem esse one or None eu tenho que colocar um abre e fecha aqui porque é um método que a gente tem que chamar né então colocando isso aqui a gente já resolve o nosso problema vou voltar aqui olha para meu arquivo de teste né vou puxar de de novo o meu terminal e vamos rodar de novo esse carinha aqui né beleza agora sim ele mostrou até Olha só o nome né E que A gente printou aqui olha Então tá aqui né um elemento em
si é de memória que é um elemento de event né ou seja isso aqui é mais ou menos a memória que a gente tem armazenada e do nosso registro de banco e aqui né o nosso nome do nosso do nosso registro em si tanto que eu posso chegar aqui muito bem e colocar por exemplo event.id né vou colocar o id aqui embaixo do nome feito isso rodando de novo Vai aparecer os as informações aqui Que a gente tem isso aqui pessoal é muito bacana né o jeito em que a gente tá estruturando essas coisas eu
vou tirar esses prints e eu vou colocar também esse Mark aqui olha porque eu vou querer pular esse tipo de teste aqui em vez de insert em DB vai ser select em DB pessoal esses caras aqui na verdade esses dois testes que a gente tá fazendo isso na verdade se enquadra como teste de Integração ou seja eles são testes em que a gente integra o nosso projeto com um elemento terceiro ou seja com o banco de dados em si na verdade Na verdade eu tô aqui falando que é teste unitário Mas isso não são testes
unitários eles se qualificam como testes de integração em testes de integração são extremamente importantes pra gente mas a gente vai tentar e manter a simplicidade aqui na nossa nlw a gente não vai falar tanto assim dos Testes de integração embora Fique aqui uma curiosidade eu vou utilizar o p test aqui só para D realmente é esses essas Nossas ações aqui em banco e por hora eu vou ficar por aqui com o nosso projeto a gente fez se você recapitular tudo aqui a nossa parte de m para criar né um servidor http e comunicar com o
nosso projeto e a gente fez também a outra ponta que é a definição né da estrutura de Model para comunicar com o banco de dados no nosso próximo encontro a gente a gente vai Colocar lógica a gente já vai começar a fazer né a dar corpo para dar sentido pro nosso projeto em relação na nos casos de uso que a gente vai colocar pra criação de eventos pra inserção de eventos pra busca né de e de inscritos mas por enquanto eu vou deixar assim vou vi aqui dar um Git status dar um Git AD ponto
né vou dar um Git status para ver tudo que a gente gente fez Git status Git commit tro m e eu vou colocar né um commit que é um Fit implement E Connection connec in DB and eding repository vou colocar desse jeito fiz o commit e beleza por hoje eu acho que já tá muito de bom tamanho tudo isso que a gente já fez então é isso a gente conseguiu terminar tudo aquilo que a gente tinha organizado pro dia de hoje e eu já te dou os meus parabéns por ter chegado até esse nosso final
dessa nossa Aula eu vou te encorajar a colocar que você terminou essa nossa primeira aula lá no grupo do discord justamente para conseguir interagir com a galera que tá lá fazer essa troca de informações e de conhecimento com aquela comunidade que é muito rica fique também à vontade para tirar as suas dúvidas com as pessoas os integrantes lá do nosso grupo do discord fique também de olho nas novidades que vão aparecer nos grupos de whatspp vão vir alguns avisos os links das próximas Aulas então é muito interessante que você fique antenado com essas informações bom
eu vou ficando por aqui a gente se vê no nosso próximo dia da nossa nlw e até mais