https://github.com/jeff-pedro/node-express-sequelize
Explorando recursos do ORM Sequelize em uma aplicação em construída com Express.js e SQLite.
https://github.com/jeff-pedro/node-express-sequelize
express nodejs sequelize sqlite
Last synced: 2 months ago
JSON representation
Explorando recursos do ORM Sequelize em uma aplicação em construída com Express.js e SQLite.
- Host: GitHub
- URL: https://github.com/jeff-pedro/node-express-sequelize
- Owner: jeff-pedro
- Created: 2024-04-28T23:00:57.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-13T20:23:10.000Z (about 2 years ago)
- Last Synced: 2025-07-20T05:53:06.653Z (11 months ago)
- Topics: express, nodejs, sequelize, sqlite
- Language: JavaScript
- Homepage:
- Size: 3.32 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Explorando Sequelize com Express.js e SQLite
> Repositório usado para explorar o [ORM Sequelize](https://sequelize.org/), utilizando-o para integrar uma API Rest desenvolvida com [Express.js](https://expressjs.com/) a uma base de dados [SQLite](https://www.sqlite.org/).
## 🤖 Tecnologias
## 🧑🏽💻 Usando
Instalando as dependências
```shell
npm install
```
Criando o bando de dados
```shell
npx sequelize-cli db:create
```
Migrando as tabelas para o banco
```shell
npx sequelize-cli db:migrate
```
Populando as tabelas com dados
```shell
npx sequelize-cli db:seed:all
```
Subindo a aplicação
```shell
npm run dev
```
## 🗺️ Rotas
- importar arquivo `./arquivos-base/postman_collection.json` no **[Postman](https://learning.postman.com/docs/getting-started/importing-and-exporting/importing-data/)**
## Entidade de Modelo Relacional

## 🧩 VSCode Plugins
- ESLint (por Microsoft)
- SQLite Viewer (por Florian Klampfer)
- SQLite (por alexcvzz)
## 🔎 Explorado
- Estruturação do projeto utilizando o padrão MVC;
- Abstração do acesso aos dados através da camada de _Services_;
- Utilização da herança de classes nas camadas de _Services_ e _Controller_ para reutilizar os métodos comuns de CRUD;
- [Criação de Modelos](https://sequelize.org/docs/v6/other-topics/migrations/#creating-the-first-model-and-migration), [Migragrações](https://sequelize.org/docs/v6/other-topics/migrations/) e [Seeders](https://sequelize.org/docs/v6/other-topics/migrations/#creating-the-first-seed) através do Sequelize-CLI;
- Uso de [Associações](https://sequelize.org/docs/v6/core-concepts/assocs/) e aplicação de seus [métodos especiais/mixins](https://sequelize.org/docs/v6/core-concepts/assocs/#special-methodsmixins-added-to-instances).
- Exclusão de registros usando a estratégia *Soft Delete* ao aplicar o conceito de [Paranaid Tables](https://sequelize.org/docs/v6/core-concepts/paranoid) suportado pelo sequelize.
- Adicionar novas migrações para fazer alteração rastreáveis na base de dados.
- Criacação de [escopos de modelo](https://sequelize.org/docs/v6/other-topics/scopes/).
- Criacação de [escopos de associação](https://sequelize.org/docs/v6/advanced-association-concepts/association-scopes/).
- [Validação](https://sequelize.org/docs/v6/core-concepts/validations-and-constraints/) de campos usando métodos buit-in do sequelize e validações customizadas.
- [Operadores](https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#operators) em consultas.
- [Métodos Finders](https://sequelize.org/docs/v6/core-concepts/model-querying-finders/) com operadores e agregadores para:
[ordernar e agrupar](https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#ordering-and-grouping) resultados, [contar](https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#count), [limitar](https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#limits-and-pagination) retorno de consultas e executar consultas escritas diretamente em SQL através do [Sequelize.literal](https://sequelize.org/docs/v6/other-topics/sub-queries/#using-sub-queries-for-complex-ordering) util na insersão de _raw queries_ em consultas SQL mais complexas.
- Como garantir a integridade das operações feitas em bancos de dados através do uso de [transações](https://sequelize.org/docs/v6/other-topics/transactions/);
## 📚 Referências
- 📚 [Sequelize docs](https://sequelize.org/docs/v6/)
- 🗞️ [REST: conceito e fundamento](https://www.alura.com.br/artigos/rest-conceito-e-fundamentos?_gl=1*1afry39*_ga*NzQ2MzgwODAwLjE3MTEyMjQ1NDA.*_ga_1EPWSW3PCS*MTcxNDc2OTY5NC45OS4xLjE3MTQ3NzAyMDguMC4wLjA.*_fplc*WERlTTljV0tqQ3FBVFRMeTQ5OEVGckxMY3FTSHZGaFhJbTcycEFrOTluYSUyRjhDaURvcEclMkZSbWlOZW80R2hocXNQQW50OEFlJTJCSyUyRmZCSUVpd3cxTlZRRTlRMEVCYmRyZkFGYVRlJTJGOG5DQjNQMiUyRjhsOTNkMjNvenRodjV1R2tRJTNEJTNE)
- 🗞️ [API Best Practices](https://www.sitepoint.com/build-restful-apis-best-practices/)
- 🎬 [Clean Architecture](https://cursos.alura.com.br/extra/alura-mais/clean-architecture-arquitetura-limpa-o-que-e--c204)
- 🗞️ [Normalização em banco de dados](https://www.alura.com.br/artigos/normalizacao-banco-de-dados-estrutura?_gl=1*wcsgsi*_ga*NzQ2MzgwODAwLjE3MTEyMjQ1NDA.*_ga_1EPWSW3PCS*MTcxNDc0ODgyMC45Ny4xLjE3MTQ3NDkzNzEuMC4wLjA.*_fplc*eVFSQUhObnJMY2YxYTIlMkZrNTRoS2R5MnFoOUpKdUI1ZTVCR1glMkJ4V3AxbFNqMjBhODdBN1NkaDlWNmpWaEV5QzNiTkFaZFh4OHRjUGhvWmNWYUVFRDJVeTVLdGNzck9sNyUyRko2M29NV2N6UlI1Wk9UczlES3c4U3U0VlZxQ1JRJTNEJTNE)
- 🗞️ [SQLite Tutoria - CHECK Constraint](https://www.sqlitetutorial.net/sqlite-check-constraint/)
- 📚 [Lista de operadores genéricos do SQL](https://www.w3schools.com/sql/sql_operators.asp)
- 📚 [Documentação sobre operadores do SQLite](https://www.sqlite.org/lang_expr.html)
- 🗞️ [Artigo sobre ordem de execução de queries SQL: por Julia Evans](https://jvns.ca/blog/2019/10/03/sql-queries-don-t-start-with-select/)