A aula foi muito boa, porém reparei 2 pequenas falhas nessa arquitetura em relação ao que prega o Clean Architecture. Nessa arquitetura criada, os usecases ficaram relativamente isolados da tecnologia (os "detalhes" que Uncle Bob comenta), contudo ainda ficaram com dependência do framework Nest p/ injeção; agora as entidades, que deveriam ser o coração do software e serem totalmente isoladas do detalhes, ficaram extremamente dependentes do TypeORM com as annotations.
Olá Raphael, tudo bem? Obrigado pelo seu feedback, em um determinado momento da aula eu comentei sobre isto. Podemos usar uma abordagem purista do Clean Arch, fazendo os uses cases e outros coisas totalmente isoladas, mas podemos usar uma abordagem não purista, aplicando o que ele diz no livro sobre quebra parcial da arquitetura, em que ele diz que os arquitetura por alguma conveniência podemos quebrar determinadas regras. Numa aplicação que iríamos desenvolver inicialmente só com Nest, uma abordagem não purista pode ser interessante. Entendeu a ideia?
Muito boa essa provocação, não somente a injeção de dependências e a questão do typeORM, até mesmo a controller, usando a própria forma de criar controller do nest já gera uma dependência tb, num conceito purista controller do nest (cria a api) e controller do clean são coisas diferentes e a controller num sentido purista tb deveria ser feita abstrata ao framework, agora o questionamento é: É necessário esse nível de purismo no nosso dia a dia de trabalho ? A longo prazo é saudável e não vai atrapalhar no time to market?
Como criar um projeto com uma arquitetura baseada em desacoplamento utilizando um framework altamente opinativo? Nem as entidades desse projeto aí estão livres de dependência, o que por sí só já fere o clean Arquitecture não? se tirar o Nest desse projeto o que sobra no code base que rodaria em outro framework ou outra versão? É nisso que eu penso quando desenvolvo algo utilizando clean arq.
uma duvida, começei um projeto basico para entender melhor mas cabei tendo uma duvida, se eu tenho um authController como vou fazer o login, importo um use-case que está vindo do user ou eu crio use-case no auth e importo repository do user ?
Eu segui essa aula com Bun e deu pau no drive do slite. Instalando com bun install o nest não reconheceu e não fez a conexão. Mas eu instalei com NPM e continuei executando com bun e estava rodando tudo certinho
A implementação das entidades não está muito dependente do typeorm, ferindo os princípios da arquitetura limpa? Digo isso pensando no que prega o DDD, que as entidades são o coração e devem ser totalmente independentes da camada de infra, de forma que fiquem protegidas. A entidade project.entity ta mais pra uma model do typeorm do que pra uma entidade com as suas regras de negócio. Outra duvida que tbm fiquei pensando foi que o project.service.ts tbm ta muito acoplado com o typeorm. Quando chamamos o método find() ou findOneOrFail() por exemplo, estamos indo direto na implementação do typeorm, e não em uma abstração intermediária. Foram algumas dúvidas que fiquei pensando, não sei se estou certo. Caso alguém saiba e queira esclarecer melhor, será muito bem vindo!
fiquei tentando fazer junto pra praticar e simplesmente gastei muito tempo tentando configurar ambiente, teve um dado momento q deu erro de sqlite_constraint no project.name e eu não entendi o que tava errado... Não consegui me adaptar a essa dinâmica de aula.
Opa! O erro significa que nenhum valor está sendo passado para o campo name de project. Este campo é definido como not null, então é obrigatório passar algum valor para ele.
Tive o mesmo problema e contornei a situação realizando a chamada por um client como Insomnia ou Postman. Depois percebi que o script do arquivo api.http estava com um pequeno erro de sintaxe. Não sei se é o seu caso, mas sugiro verificar algo assim
Grande Mestre Wesley, cara cria um projeto de whatsapp com integração PIX com retorno. Eu pagaria por um projeto assim... Venda de um produto, tipo vídeo, por exemplo, o camarada paga com pix e envia o vídeo automaticamente.
Para quem como eu só precisava da parte de Clean Architecture, ela começa na minutagem: 01:12:00
mano do céu na moral to impressionado com a qualidade dessa aula, boa demais nmrl mesmo
Opa! Muito obrigado pelo feedback! Fico feliz que tenha gostado da aula!
Ótimo conteúdo, eu já estava estudando arquitetura hexagonal e tinha um projeto feito em Nest, alguns ajustes e consegui deixar ele bem padronizado.
pica demais essa aula! Valeu, Luiz! Parabéns pela didática
Opa Daniel, show de bola! Muito obrigado pelo seu feedback!
A aula foi muito boa, porém reparei 2 pequenas falhas nessa arquitetura em relação ao que prega o Clean Architecture. Nessa arquitetura criada, os usecases ficaram relativamente isolados da tecnologia (os "detalhes" que Uncle Bob comenta), contudo ainda ficaram com dependência do framework Nest p/ injeção; agora as entidades, que deveriam ser o coração do software e serem totalmente isoladas do detalhes, ficaram extremamente dependentes do TypeORM com as annotations.
Olá Raphael, tudo bem?
Obrigado pelo seu feedback, em um determinado momento da aula eu comentei sobre isto.
Podemos usar uma abordagem purista do Clean Arch, fazendo os uses cases e outros coisas totalmente isoladas, mas podemos usar uma abordagem não purista, aplicando o que ele diz no livro sobre quebra parcial da arquitetura, em que ele diz que os arquitetura por alguma conveniência podemos quebrar determinadas regras.
Numa aplicação que iríamos desenvolver inicialmente só com Nest, uma abordagem não purista pode ser interessante.
Entendeu a ideia?
@@argentinaluiz Sim, entendi. Obrigado pela resposta!
Muito boa essa provocação, não somente a injeção de dependências e a questão do typeORM, até mesmo a controller, usando a própria forma de criar controller do nest já gera uma dependência tb, num conceito purista controller do nest (cria a api) e controller do clean são coisas diferentes e a controller num sentido purista tb deveria ser feita abstrata ao framework, agora o questionamento é: É necessário esse nível de purismo no nosso dia a dia de trabalho ? A longo prazo é saudável e não vai atrapalhar no time to market?
7😮@@raphaelcomph-dev
Excelente conteúdo!! Obrigado por compartilhar este conhecimento. Ganhou um seguidor. Abraço!!
as melhores aulas sempre aqui
@argentinaluiz que ferramenta você está usado para fazer o autocomplete? tanto em .ts como tabém na command line? value, conteudo top demais
Como criar um projeto com uma arquitetura baseada em desacoplamento utilizando um framework altamente opinativo? Nem as entidades desse projeto aí estão livres de dependência, o que por sí só já fere o clean Arquitecture não? se tirar o Nest desse projeto o que sobra no code base que rodaria em outro framework ou outra versão? É nisso que eu penso quando desenvolvo algo utilizando clean arq.
por isso gosto da fastify, não tem toda essa dependência do frame
uma duvida, começei um projeto basico para entender melhor mas cabei tendo uma duvida, se eu tenho um authController como vou fazer o login, importo um use-case que está vindo do user ou eu crio use-case no auth e importo repository do user ?
Alguém sabe dizer se é possível rodar o Nest com Bunjs e se existe ganho de performance?
Tem sim amigo. Ainda não testei, mas o Bun já suporta
Eu segui essa aula com Bun e deu pau no drive do slite. Instalando com bun install o nest não reconheceu e não fez a conexão. Mas eu instalei com NPM e continuei executando com bun e estava rodando tudo certinho
A implementação das entidades não está muito dependente do typeorm, ferindo os princípios da arquitetura limpa?
Digo isso pensando no que prega o DDD, que as entidades são o coração e devem ser totalmente independentes da camada de infra, de forma que fiquem protegidas. A entidade project.entity ta mais pra uma model do typeorm do que pra uma entidade com as suas regras de negócio.
Outra duvida que tbm fiquei pensando foi que o project.service.ts tbm ta muito acoplado com o typeorm. Quando chamamos o método find() ou findOneOrFail() por exemplo, estamos indo direto na implementação do typeorm, e não em uma abstração intermediária.
Foram algumas dúvidas que fiquei pensando, não sei se estou certo. Caso alguém saiba e queira esclarecer melhor, será muito bem vindo!
a resposta ta logo a seguida no video hahaha
fiquei tentando fazer junto pra praticar e simplesmente gastei muito tempo tentando configurar ambiente, teve um dado momento q deu erro de sqlite_constraint no project.name e eu não entendi o que tava errado... Não consegui me adaptar a essa dinâmica de aula.
Opa! O erro significa que nenhum valor está sendo passado para o campo name de project. Este campo é definido como not null, então é obrigatório passar algum valor para ele.
Tive o mesmo problema e contornei a situação realizando a chamada por um client como Insomnia ou Postman. Depois percebi que o script do arquivo api.http estava com um pequeno erro de sintaxe. Não sei se é o seu caso, mas sugiro verificar algo assim
Grande Mestre Wesley, cara cria um projeto de whatsapp com integração PIX com retorno. Eu pagaria por um projeto assim... Venda de um produto, tipo vídeo, por exemplo, o camarada paga com pix e envia o vídeo automaticamente.