Skip to content

Latest commit

 

History

History
145 lines (95 loc) · 7.78 KB

File metadata and controls

145 lines (95 loc) · 7.78 KB

🎉 Boas-vindas ao meu repositório do proejto blogs API

swagger documetation blogs api

flag tools flag tools flag tools flag database flag orm

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

🔨 Recursos do projeto

  • ✅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

▶️ Executando aplicação

🐋 Rodando no Docker vs Localmente

👉 Com Docker

⚠️ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com 1.26.0 por 1.29.2.

ℹ️ Rode os serviços node e db com o comando docker-compose up -d --build.

  • Lembre-se de parar o mysql se 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_api e outro chamado blogs_api_db;

  • A partir daqui você pode rodar o container blogs_api via 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 no package.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 comando docker exec citado 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.


👉 Sem Docker

ℹ️ 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 node instalado em seu computador.


🎲 Diagrama ER e Entidades

Diagrama de Entidade-Relacionamento

der


Formato das 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 users 2011-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 BlogPosts 20 // Chave primária e estrangeira, referenciando o id de Categories

    Os 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"


🧔 Autor