Projeto desenvolvido durante o módulo de back-end do curso de desenvolvimento web full-stack Trybe.
Neste projeto foi desenvolvido uma API e um banco de dados para a produção de conteúdo para um blog.
Uma aplicação em Node.js usando o pacote sequelize para fazer um CRUD de posts. Criando endpoints que estão conectados ao banco de dados seguindo os princípios do REST
- ✅EndPoint para login de pessoa usuária, utilizando o método POST.
- ✅EndPoint para cadastro de pessoas usuárias, utilizando o método POST.
- ✅EndPoint para listas todos os usuários cadastrados, utilizando o método GET
- ✅EndPoint para listas pelo id apenas um usuário cadastrado, utilizando o método GET
- ✅EndPoint para deletar usuário logado, utilizando o método DELETE
- ✅EndPoint para cadastro de categoria de post, utilizando o método POST.
- ✅EndPoint para listas todos as categorias de posts cadastradas, utilizando o método GET
- ✅EndPoint para listas todos os posts cadastradas, utilizando o método GET
- ✅EndPoint para listas pelo id apenas um post cadastrado, utilizando o método GET
- ✅EndPoint para listas pela query informado apenas um post cadastrado que corresponda ao title ou content do post, utilizando o método GET
- ✅EndPoint para cadastro de um novo post, utilizando o método POST.
- ✅EndPoint para atualizar um post existente, utilizando o método PUT.
- ✅EndPoint para deletar um post existente, utilizando o método DELETE
- ✅Para fazer um post é necessário usuário e login, portanto é trabalhada a relação entre as tabelas user e post
- ✅É necessário a utilização de categorias para os posts, trabalhando, assim, a relação das tabelas posts para categories e de categories para posts
🐋 Rodando no Docker vs Localmente
1.26.0 por 1.29.2.
ℹ️ Rode os serviços
nodeedbcom o comandodocker-compose up -d --build.
-
Lembre-se de parar o
mysqlse estiver usando localmente na porta padrão (3306), ou adapte, caso queria fazer uso da aplicação em containers; -
Esses serviços irão inicializar um container chamado
blogs_apie outro chamadoblogs_api_db; -
A partir daqui você pode rodar o container
blogs_apivia CLI ou abri-lo no VS Code;
ℹ️ Use o comando
docker exec -it blogs_api bash.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
ℹ️ Instale as dependências [Caso existam] com
npm install. (Instale dentro do container)
-
⚠️ Atenção: Caso opte por utilizar o Docker, TODOS os comandos disponíveis nopackage.json(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker execcitado acima. -
⚠️ Atenção: O git dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container. -
⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos. -
✨ Dica: A extensão
Remote - Containersé indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.
ℹ️ Instale as dependências [Caso existam] com
npm install
-
⚠️ Atenção: Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos. -
✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o
nodeinstalado em seu computador.
🎲 Diagrama ER e Entidades
-
Uma tabela chamada users, contendo dados com a seguinte estrutura:
id display_name email password image 1 Brett Wiltshire brett@email.com // tem quer ser único 123456 http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png -
Uma tabela chamada categories, contendo dados com a seguinte estrutura:
id name 18 News -
Uma tabela chamada blog_posts, contendo dados com a seguinte estrutura:
id title content user_id published updated 21 Latest updates, August 1st The whole text for the blog post goes here in this key 14 // Chave estrangeira, referenciando o id de users2011-08-01T19:58:00.000Z 2011-08-01T19:58:51.947Z -
Uma tabela chamada PostCategories, contendo uma chave primária composta utilizando os dois atributos da estrutura:
post_id category_id 50 // Chave primária e estrangeira, referenciando o id de BlogPosts20 // Chave primária e estrangeira, referenciando o id de CategoriesOs dados acima são fictícios, e estão aqui apenas como exemplo
👀 Dicas de scripts prontos
-
Deleta o banco de dados:
"drop": "npx sequelize-cli db:drop"
-
Cria o banco e gera as tabelas:
"prestart": "npx sequelize-cli db:create && npx sequelize-cli db:migrate"
-
Insere dados/Popula a tabela:
"seed": "npx sequelize-cli db:seed:all"

