👨💻 O que foi desenvolvido
Aqui você vai encontrar os detalhes de como foi estruturado este projeto e instruções para rodar.
Este 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.
1. Foi desenvolvido os endpoints que estarão conectados ao banco de dados seguindo os princípios do REST;
2. Para fazer um post é necessário usuário e login, possui relacionamentos,  **relação entre** `user` e `post`; 
3. É necessário utilização das categorias para os posts, trabalhando, assim, a **relação de** `posts` para `categories` e de `categories` para `posts`.
🐋 Rodando no Docker vs Localmente
ℹ️ 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)
ℹ️ Instale as dependências [Caso existam] com
npm install
- ✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o nodeinstalado em seu computador.
Como ter acesso ao projeto e instalar as dependências
1. Entre na pasta do repositório que você acabou de clonar ou fazer o download do arquivo zip:
* `cd pasta-do-repositório`
2. Instale as dependências:
*`npm install`
3. Suba os imagens do servidor node e do banco de do docker-compose com o comando:
*`docker-compose up -d --build
<br />
👀 REST
Tenha em mente que todas as "respostas" devem respeitar os status do protocolo HTTP com base no que o REST prega.
Alguns exemplos:
- 
Requisições que precisam de token mas não o receberam devem retornar um código de status 401;
- 
Requisições que não seguem o formato pedido pelo servidor devem retornar um código de status 400;
- 
Um problema inesperado no servidor deve retornar um código de status 500;
- 
Um acesso ao criar um recurso, no nosso caso usuário ou post, deve retornar um código de status 201.
🎲 Entidades
O seu projeto deverá usar o ORM Sequelize para criar e atualizar o seu banco de dados.
Os primeiros requisitos do projeto devem orientar a produção de suas migrations para gerar:
- 
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 - 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"