Salve, beleza? Continuamos essa saga aqui no Domain Drone Design. Agora vamos brincar um pouquinho com os nossos repositórios, os nossos novos repositórios, que é o de Customer e de Evento. Então, vamos fazer o seguinte aqui. Eu vou criar uma pastinha de testes aqui. Movo esse aqui do Partner para lá. A gente coloca todos os carinhas para cá, então posso copiar vamos ver ali o de customer vendo que o cpf está funcionando corretamente, inclusive daria até para poder fazer uma abstração aqui dessa conexão mas vamos lá aonde tá a parte daqui e daria para gente poder e passar para casa mas só que aqui é casa e dessa forma e aqui é customer no singular. Aí aqui eu tenho um customer em cima, porque ele está falando que eu não estou utilizando. coloquei todas as variáveis aqui em maiúsculo também então pronto aqui ele vai criar a tabela de customers no meu banco de dados aí ele vai aqui tem que ser o customer tem que ser o objeto que eu criei aqui Customer também, eu tenho o Change Name dentro da dessa entidade? eu não tenho, vamos criar ali pra poder ter o mesmo teste então eu faço ali um Name que aí mantém aqui, aqui é minúsculo também e aqui é minúsculo show de bola aqui é minúsculo, aqui também, aí faltam esses dois lugares aqui Na criação tem que passar um CPF também. Será que o Copilot me dá um CPF válido aqui? Não, esse CPF aí não é válido, então nem adianta eu tentar. Vamos pegar aqui do teste. Tem um CPF válido aqui. A gente passa ele aqui então vou fazer um add e depois faz o find e a gente até pode fazer a verificação aqui se o expect o customer found deixa eu passar para no meu case o CPF vai ser igual posso até colocar ponto value para poder forçá-lo e que eu estou capturando o objeto de valor aproveito que ele é igualzinho esse valor aqui o restante vai ser a mesma coisa então vamos rodar o nosso teste. E tem um customer ainda maiúsculo aqui. Aqui. Tá. Aí aqui é que é legal que o objeto de valor já fez a validação e até forçou a lembrar o comportamento convencional. A gente está fazendo uma sanitização, salvando sem os traços. Então, não vai dar certo ali, porque a gente já viu que os valores são iguais. Aí tem mais um CustomerName. Cadê o CustomerName aqui? Quando ele dá esses erros aqui, quando eu coloquei um After para ele quebrar a conexão, ele fica ainda mantendo, por isso que eu tenho que matar o terminal e abrir de novo. Então, deu tudo certo. E está aqui o nosso Customer da linha 43. Da linha 43. Que é o que a gente está consultando. Então, veja que ele está consultando com o Customer aí de bonitinho e com o nosso objeto de valor. Então, isso aqui que vai dar consistência para a gente, porque agora não interessa quando eu criar, eu recuperar do banco de dados, eu sempre tenho ali a entidade estável. E olhando para o repositório, foi pouquíssimo código que a gente acabou digitando. Então agora vamos fazer para o evento, que vai ser o gran finale aqui da nossa configuração de repositório, a gente vai ver que ele vai conseguir fazer a persistência de todo mundo junto. Então, aqui eu tenho que tomar cuidado. Onde está custom é somente maiúsculo, a gente modifica para evento. Mudei todos os maiúsculos, agora onde está o minúsculo que sobrou, coloco o evento aqui também. Agora, para poder fazer esse teste, não basta só que eu carregue o esquema, o mapeamento do evento, eu preciso ter também do eventSectionSchema e do eventSpotSchema. Tem que criar as três tabelas. Nesse caso aqui até quero deixar uma referência sobre a questão de modelagem. Nesse caso eu tenho as três entidades e acabou virando três tabelas, mas não tem essa regra, não existe essa lei que você tem ali uma entidade e ela vai virar necessariamente uma tabela. Ela pode virar um registro ali, tem um recurso muito legal nesses novos ORMs, que é o Embedded. esses novos ORMs, que é o Embedded, às vezes o mapeamento pode preencher outras colunas ali da mesma tabela. Enfim, você tem que ver o que faz sentido para o armazenamento, para que o puxar esses dados seja o mais rápido possível. Nesse nosso caso aqui, vale a pena, como esses mains que a gente tem, que tenha-se várias tabelas. Agora, eu tenho aqui, então, as minhas três tabelas. Aí tem a questão aqui de criar. A gente tem que fazer, na verdade, tudo do zero aqui. O close eu vou deixar ali embaixo. Então, aqui na hora de criar, a gente vai precisar do partner também. Então não posso esquecer aqui do partner esquema, antes da gente começar, porque tem relacionamento com o partner. Então de qualquer forma, nós vamos precisar do partner repo vai ser igual a new partner mysql repository então antes aqui eu tenho que criar um partner qualquer faço um add e faço o flush na verdade dá até pra gente poder fazer uma outra coisa aqui e faço o flush. Na verdade, dá até para a gente poder fazer uma outra coisa aqui. Eu vou fazer de forma diferente. Olha que interessante. Eu não vou fazer o flush. Não fiz o flush, fiz o add. Então, significa que eu não tenho ele no banco de dados ainda. O add é o que eu tenho que fazer para já deixar ele empilhado lá no meu Unit of Work. Então, eu vou fazer um Partner Init Event, passando o nome do evento, a data dele, pode ser um New Date qualquer e a última coisa é a descrição, que nem era obrigatória, mas eu vou deixar aqui. Esse evento aqui está sendo usado mais para baixo, na verdade seria interessante que eu já criasse esses dois repositórios aqui em cima e colocasse essa lógica aqui para baixo. Então eu vou tirar isso aqui, menos o close ali embaixo. Então eu chamo o meu repositório e faço um add. se eu fizer o flush ele vai conseguir salvar os dois de uma vez? essa é a pergunta ele deu um erro aqui que ele tentou pegar o evento o evento schema será que eu passei certo lá? é bom fazer esse teste porque não sei se eu... acho que ele não está importado aqui é porque não deu erro, está vendo como isso aqui é uma filada esse evento está aqui é a classe do node melhor do próprio javascript eu tenho que importar ela ele pegou o mapeamento da classe genérica do evento e não usou a nossa então ele já pausou aqui. Então agora vamos rodar o teste. Ele até conseguiu fazer a persistência, vamos até fazer aqui um debug igual a true porque isso aqui mostra todos os SQLs que ele vai fazer, ó, se a gente olhar aqui ele criou a tabela e tudo mais porém ele está dando esse errinho aqui em collection get items, tá e tudo mais. Porém, ele está dando esse errinho aqui em Collection Get Items. Ele está dando esse errinho em relação às coleções. Por que está acontecendo? Porque, vamos pegar aqui o evento. A gente está lidando com esse set aqui, na verdade, com o section como set, na verdade, qualquer relacionamento. A gente está lidando com o set, porém o microRM trabalha com a abstração dessas coleções de uma forma diferente. Ele até usa o set por debaixo dos panos. Mas quando a gente passa, quando a gente lida esse section aqui dessa forma, ele tenta fazer ali um getItems. Eu não tenho getItems aqui de set. Eu tenho somente esses métodos. Então a gente precisa fazer essa adaptação para a gente poder concluir esse teste. E a gente vai ver na próxima aula como adaptar essas coleções aqui para que a gente não perca o nosso uso primordial aqui de não trabalhar com a tecnologia, de não depender dela, de usar diretamente as abstrações da própria linguagem, mas não perdendo a lei integração com o micro o rm tá então vamos seguir nossa saga é isso aí e até a próxima