Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pablwoaraujo/orm-sequelize
Curso de ORM com NodeJS: API com Sequelize e MySQL
https://github.com/pablwoaraujo/orm-sequelize
alura docker express javascript mysql sequelize sequelize-cli sequelize-orm
Last synced: about 8 hours ago
JSON representation
Curso de ORM com NodeJS: API com Sequelize e MySQL
- Host: GitHub
- URL: https://github.com/pablwoaraujo/orm-sequelize
- Owner: pablwoAraujo
- Created: 2023-10-17T14:23:03.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-26T14:35:38.000Z (about 1 year ago)
- Last Synced: 2023-10-26T16:37:56.149Z (about 1 year ago)
- Topics: alura, docker, express, javascript, mysql, sequelize, sequelize-cli, sequelize-orm
- Language: JavaScript
- Homepage:
- Size: 97.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# orm-sequelize
## 📋 Índice
- [📖 Sobre](#-Sobre)
- [🚀 Tecnologias utilizadas](#-Tecnologias-utilizadas)
- [📌 Como executar o projeto](#-Como-executar-o-projeto)
- [💻 Comandos do sequelize-cli usados](#-Comandos-do-sequelize-cli-usados)
- [🎓 Certificados](#-Certificados)## 📖 Sobre
Projeto desenvolvido durante os cursos [Curso de ORM com NodeJS: API com Sequelize e MySQL](https://cursos.alura.com.br/course/orm-nodejs-api-sequelize-mysql) e [Curso de ORM com NodeJS: avançando nas funcionalidades do Sequelize](https://cursos.alura.com.br/course/orm-nodejs-avancando-sequelize) da Alura.> Diagrama usado de referência do projeto:
![Diagrama](assets/diagram.png)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”.## 🚀 Tecnologias utilizadas
O projeto foi desenvolvido utilizando as seguintes tecnologias:- [Node.js](https://nodejs.org/en)
- [Express](https://expressjs.com/)
- [MySQL](https://www.mysql.com/)
- [Sequelize](https://sequelize.org/)
- [sequelize-cli](https://github.com/sequelize/cli)
- [Docker](https://www.docker.com/)## 📌 Como executar o projeto
Primeiro é preciso subir uma instância do mysql:
```bash
docker pull mysqldocker run
--name english-school
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=root
-e MYSQL_DATABASE=english-school
-d mysqldocker start english-school
```Execute o projeto node:
```bash
npm run dev
```[![Run in Insomnia}](https://insomnia.rest/images/run.svg)](https://insomnia.rest/run/?label=orm-sequelize&uri=https%3A%2F%2Fgithub.com%2FpablwoAraujo%2Form-sequelize%2Ftree%2Fmain%2Fassets%2FInsomnia_requests.json)
## 💻 Comandos do sequelize-cli usados
```bash
## 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:stringnpx 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-nivelnpx 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
``````bash
## 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
```## 🎓 Certificados
### [ORM com NodeJS: API com Sequelize e MySQL](https://cursos.alura.com.br/certificate/d72a0efc-d5bf-4d51-8fd0-220fba2f7908?lang=pt_BR)
### [ORM com NodeJS: avançando nas funcionalidades do Sequelize](https://cursos.alura.com.br/certificate/c6e51b86-9159-48c6-9e99-0bbfc041c8ca?lang=pt_BR)