- Modo desenvolvimento:
npm run dev
- github Front-end - stage1
- github Front-end - stage2
- Nessa aula vamos construir o back-end da aplicação utilizando Node.js e TypeScript. Você vai conhecer conceitos importantes do back-end como SOLID e testes automatizados, além de aprender como persistir informações no banco de dados com Prisma.
- git init
- git add .
- git commit -m "stage 3"
- git branch -M stage3
- git remote add origin git@github.com:mazera3/nlw-return-mission-impulse.git
- git push -u origin stage3
- npm init -y
- npm i typescript @types/node ts-node-dev -D
- npx tsc --init
- npm i express
- npm i @types/express -D
- SQLite, Prisma,
- prisma.io: Next-generation Node.js and TypeScript ORM - Suporte a PostgreSQL, MySQL, SQL Server, SQLite, MongoDB and CockroachDB.
- npm i prisma -D (desenvolvimento)
- npm i @prisma/client (produção)
- npx prisma init
- Esquema Prisma foi criado em prisma/schema.prisma
- Próximos passos:
- Configure o DATABASE_URL no arquivo .env para apontar para seu banco de dados existente
- Defina o provedor do bloco datasource em schema.prisma para corresponder ao seu banco de dados: postgresql, mysql, sqlite, sqlserver, mongodb ou cockroachdb (Preview).
- Execute prisma db pull para transformar seu esquema de banco de dados em um esquema Prisma.
- Execute prisma generate para gerar o Prisma Client. Você pode então começar a consultar seu banco de dados.
- npx prisma migrate dev (ou deploy): cria a tabela no banco de dados.
- npx prisma studio (abre uma interface de navegação)
- npm i nodemailer
- npm i @types/nodemailer -D
- mailtrap: Email Sandbox Service
- SOLID: Os 5 Princípios para as Boas Práticas da POO
-
- S — Single Responsiblity Principle - SRP (Princípio da responsabilidade única)
- Cada classe tem uma responsabilidade única: uma classe deve ser especializada em um único assunto e possuir apenas uma responsabilidade dentro do software, ou seja, a classe deve ter uma única tarefa ou ação para executar.
- S — Single Responsiblity Principle - SRP (Princípio da responsabilidade única)
-
- O — Open-Closed Principle - OCP (Princípio Aberto-Fechado)
- As classes da aplicação, objetos ou entidades, dever ser abertas para extensão nais fechadas para modificação: quando novos comportamentos e recursos precisam ser adicionados no software, devemos estender e não alterar o código fonte original.
- O — Open-Closed Principle - OCP (Princípio Aberto-Fechado)
-
- L — Liskov Substitution Principle - LSP (Princípio da substituição de Liskov)
- Uma classe derivada (herança) deve ser substituível por sua classe base (pai).
- L — Liskov Substitution Principle - LSP (Princípio da substituição de Liskov)
-
- I — Interface Segregation Principle - ISP (Princípio da Segregação da Interface)
- Uma classe não deve ser forçada a implementar interfaces e métodos que não irão utilizar: é melhor criar interfaces mais específicas ao invés de termos uma única interface genérica.
- I — Interface Segregation Principle - ISP (Princípio da Segregação da Interface)
-
- D — Dependency Inversion Principle - DIP (Princípio da inversão da dependência)
- Dependa de abstrações e não de implementações: Módulos de alto nível não devem depender de módulos de baixo nível, ambos devem depender da abstração; abstrações não devem depender de detalhes, detalhes devem depender de abstrações.
- D — Dependency Inversion Principle - DIP (Princípio da inversão da dependência)
-
- npm install jest -D
- npx jest --init
- npm install ts-node -D
- npm i -D jest @swc/core @swc/jest @types/jest
- npm i -D @swc/jest
- O SWC é uma plataforma extensível baseada em Rust para a próxima geração de ferramentas de desenvolvimento rápidas. Ele é usado por ferramentas como Next.js, Parcel e Deno, além de empresas como Vercel, ByteDance, Tencent, Shopify e muito mais. O SWC pode ser usado tanto para compilação quanto para agrupamento. Para compilação, ele usa arquivos JavaScript/TypeScript usando recursos modernos de JavaScript e gera um código válido que é suportado por todos os principais navegadores.
- git add .
- git commit -m "stage 3 - Testes"
- git branch -M stage3-Testes
- git push -u origin stage3-Testes