- 📖 Sobre
- 🚀 Tecnologias utilizadas
- 📌 Como executar o projeto
- 💻 Comandos do sequelize-cli usados
- 🎓 Certificados
Projeto desenvolvido durante os cursos Curso de ORM com NodeJS: API com Sequelize e MySQL e Curso de ORM com NodeJS: avançando nas funcionalidades do Sequelize da Alura.
Recebemos uma lista de funcionalidades que o cliente deseja implementar, agora que o CRUD básico foi feito e o sistema está funcionando. Durante o projeto vamos analisar esta lista e transformar esses requisitos em novas funcionalidades:
- [✅] O cliente não gostaria que registros importantes do sistema, como as Pessoas, sejam apagados definitivamente do banco de dados.
- [✅] Para deixar a interface mais limpa, o cliente gostaria que na lista de Pessoas, por padrão, fossem exibidos somente os usuários ativos.
- [✅] Foram percebidas algumas falhas de validação dos formulários por parte do front-end, o que resultou em dados de email inválidos no banco. É desejável que essa validação não seja responsabilidade exclusiva do front.
- [✅] É importante poder consultar todas as matrículas confirmadas referentes a estudante X de forma rápida.
- [✅] O cliente gostaria de poder consultar as turmas abertas por intervalo de data, para não receber informações desnecessárias (como turmas antigas).
- [✅] O cliente quer poder consultar as matrículas por turma e saber quais delas estão lotadas, para organizar melhor as matrículas.
- [✅] O cliente gostaria que, uma vez que o cadastro de um estudante fosse desativado, todas as matrículas relativas a este estudante automaticamente passassem a constar como “canceladas”.
O projeto foi desenvolvido utilizando as seguintes tecnologias:
Primeiro é preciso subir uma instância do mysql:
docker pull mysql
docker run
--name english-school
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=root
-e MYSQL_DATABASE=english-school
-d mysql
docker start english-school
Execute o projeto node:
npm run dev
## 1️⃣ Curso de ORM com NodeJS: API com Sequelize e MySQL
# Criando o modelo e a migração de Pessoas
npx sequelize-cli model:create --name Pessoas --attributes nome:string,ativo:boolean,email:string,role:string
# Inserindo as migrations pendentes no banco de dados
npx sequelize-cli db:migrate
# Gerando um novo arquivo de seed para o modelo Pessoas
npx sequelize-cli seed:generate --name demo-pessoa
# Inserindo os dados das seeds no banco
npx sequelize-cli db:seed:all
# Criando os novos modelos e migrações
npx sequelize-cli model:create --name Niveis --attributes descr_nivel:string
npx sequelize-cli model:create --name Turmas --attributes data_inicio:dateonly
npx sequelize-cli model:create --name Matriculas --attributes status:string
# Depois de fazer as associações e referências no código, basta rodar:
npx sequelize-cli db:migrate
# criando os seeds para popular as tabelas
npx sequelize-cli seed:generate --name demo-nivel
npx sequelize-cli seed:generate --name demo-turmas
npx sequelize-cli seed:generate --name demo-matriculas
# Inserindo os dados das seeds no banco
npx sequelize-cli db:seed:all
## 2️⃣ Curso de ORM com NodeJS: avançando nas funcionalidades do Sequelize
# Criando as migrações para adicionar a nova coluna nas tabelas
npx sequelize-cli migration:generate --name add-column-pessoas
npx sequelize-cli migration:generate --name add-column-niveis
npx sequelize-cli migration:generate --name add-column-turmas
npx sequelize-cli migration:generate --name add-column-matriculas
# Rodando as migrations
npx sequelize-cli db:migrate