Segundo a própria documentação, é um framework node.js progressivo para criar aplicações back-end.
Assim como o "Angular", framework front-end desenvolvido pela Google, o Nest utiliza de uma arquitetura modular, ou seja, trabalha com módulos.
Neste exemplo vemos a criação do modulo "Person" e como ele é trabalhado na forma de um CRUD.
Para mim e para você (caso seja meu colega de equipe), este framework tem como vantagem justamente o que foi descrito acima, por se assemelhar muito com Angular, temos como vantagem o reeaproveitamento de conhecimento adquirido durante o processo de desenvolvimento.
Primeiramente, é preciso que você instalado em sua máquina:
- Node.js
- NestJS
- PostgreSQL (ou algum outro banco de dados relacional que você tenha dominio, mas lembre-se que será necessário alterar muitas coisas, então sugiro seguir com o Postgres mesmo)
- Docker (opcional, mas recomendado)
E também ja me antecipo em dizer que foi utilizado o TypeORM, caso você queira conferir a sua documentação.
Caso você não tenha instalado o docker, será necessário seguir o seguinte passo a passo:
- Navegue até o diretório onde você clonou este repositório;
- Execute o comando npm install ou npm i (para os intimos);
- Execute o comando npm run typeorm migration:run (para que a tabela "Persons" seja criado em seu banco de dados);
- E por fim execute o comando npm run start:dev;
Caso você seja brabo (o manjador mesmo), e tenha docker instalado, faça:
- docker compose up -d (esse -d mantem a aba do terminal liberado para uso sem trava-lo com log);
Como disse, essa POC é extremamente simples e temos os seguintes endpoins:
- / - é a raiz da nossa aplicação e ela retorna o famigerado "Hello World";
- /person - retorna um array com todos os registros existentes da entidade "Person";
- /person/:id - retorna um unico registro com base no id;
- /person - endpoint responsável por criar o registro da entidade "Person";
- /person/:id - endpoint responsável por atualizar o registro referente ao id da entidade "Person";
- /person/:id - endpoint responsável pela deleção do registro referente ao id da entidade "Person";
Os proximos passos deste POC são:
- Adicionar multi tenancy feature, para que a aplicação consiga acessar o banco de acordo com o codigo do cliente;
- Iniciar o trabalho com environments;
- Iniciar trabalhos com testes unitários;
- Iniciar DevOps para facilitar deploy;
- Me chama no zap (só para conhecidos);
- Me manda uma DM no aqui
- https://github.com/nestjs/nest/tree/master/sample/05-sql-typeorm
- https://betterprogramming.pub/nest-js-project-with-typeorm-and-postgres-ce6b5afac3be
- https://espositomarco.medium.com/handle-multi-tenant-multi-db-with-nestjs-and-typeorm-ee50f162485e
- https://github.com/marcoesposito/nestjs-typeorm-multi-tenant
- https://www.youtube.com/watch?v=sNosL578ECo
- https://www.youtube.com/watch?v=wLr23WHZQhA&t=1225s&ab_channel=MatheusCastiglioni