Skip to content

esdrasoliveira5/to-do-list-backend

Repository files navigation

to-do list backend Api

Sumário


Descrição

Objetivo: O objetivo dessa aplicação, é manipular um banco de dados. Os conhecimentos aplicados foram:

  • Arquitetura REST;
  • Autenticações e Permissões com JWT;
  • Modelagem de Dados e Migrations;
  • Banco de Dados SQL (PostgreSQL);
  • Uso de containers (Docker).

Pré-requisitos

  • docker
  • npm version 6.14.13
  • node version 14.17.0
  • Um banco de dados postgreSQL

Instalação

  • Clone o repositório
      git clone git@github.com:esdrasoliveira5/to-do-list-backend.git
  • Vá para a pasta da aplicação
      cd to-do-list-backend
  • Configure o arquivo .env (use o arquivo .env.example como guia)

Instruções para iniciar o projeto


  • Comando para iniciar
      docker image build -t todobackend .
    
  • Comando para inserir as tabelas no banco de dados
      npx sequelize db:migrate   
    
  • Comando para inserir as categorias na tabela
      npx sequelize db:seed:all

Documentação


Verifica o estado da Api

GET /

Esse endpoint verifica se a Api esta online e retorna um objeto com a mensagem Api to-do list online!!

  • Exemplo response body
      {
          "message": "Api to-do list online!!"
      }

Registrar usuário

POST /user

Esse endpoint registra um usuário e retorna um objeto com a menssagem.

  • Exemplo request body

      {
          "name": "name",
          "lastName": "lastname",
          "email": "exemple@email.com",
          "password": "12345678"
      }
  • Exemplo response body

      {
        "message": "User created"
      }

Login

POST /login

Esse endpoint valida o login do usuário e retorna um objeto com o id do usuario e o token de acesso dele.

  • Exemplo request body

      {
          "email": "exemple@email.com",
          "password": "12345678"
      }
  • Exemplo response body

      {
          "userId": 26,
          "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiZXhlbXBsZUBlbWFpbC5jb20iLCJpYXQiOjE2NDUxNDI0NzksImV4cCI6MTY0NTc0NzI3OX0.sRZtnLnkGYHjhFBXJISTcX41QbvpGxll-wUnU-kGxyE"
      }

Lista um usuário

GET /user/:id

Esse endpoint busca um usuario cadastrado pelo id.

  • Exemplo request headers

    {
      "Authorization": "(Bearer Token)"
    }
  • Exemplo response body

      {
          "id": 26,
          "name": "name",
          "lastName": "lastname",
          "email": "exemple@email.com",
          "password": "12345678",
          "created": "2022-02-17T23:53:25.727Z",
          "tasks": []
      }

Editar um usuário

PUT /user/:id

Esse endpoint atualiza um usuario com o ID fornecido na rota e retorna um objeto com os dados atualizados.

Obs: Apenas o usuário que criou o usuario pode atualizar.

  • Exemplo request headers

        {
          "Authorization": "(Bearer Token)"
        }
  • Exemplo request body

      {
          "name": "name",
          "lastName": "lastname",
          "password": "12345678"
      }
  • Exemplo response body

      {
          "name": "name",
          "lastName": "lastname",
          "password": "12345678"
      }

Deleta um usuário

DELETE /user/:id

Esse endpoint deleta um usuario com o ID fornecido na rota e retorna um objeto com a mensagem User deleted.

Obs: Apenas o usuário que criou o usuario pode deletar.

  • Exemplo request headers

      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo response body

      {
          "message": "User deleted"
      }

Cria uma tarefa

POST /tasks

Esse endpoint cria uma tarefa e retorna um objeto com a tarefa criada.

  • Exemplo request headers

      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo request body

      {
          "title": "title exemple",
          "description": "description exemple",
          "priority": "Alta",
          "dateLimit": "2022-10-02"
      }
  • Exemplo response body

      {
          "id": 71,
          "title": "title exemple",
          "description": "description exemple",
          "priority": "Alta",
          "dateLimit": "2022-10-02",
          "userId": 26,
          "created": "2022-02-18T00:44:02.803Z",
          "categoryId": 1
      }

Lista todas as tarefas criadas

GET /tasks

Esse endpoint retorna todas as tarefas relacionadas a um usuario.

Obs: Apenas o usuario que criou as tarefas pode pegar as tarefas.

  • Exemplo request headers

      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo response body

      [
          {
              "id": 71,
              "title": "title exemple",
              "description": "description exemple",
              "priority": "Alta",
              "dateLimit": "2022-10-02",
              "userId": 26,
              "created": "2022-02-18T00:44:02.803Z",
              "categoryId": 1,
              "categories": {
                  "id": 1,
                  "name": "Não iniciado"
              }
          }
      ]

Lista uma tarefa especifica

POST /tasks/:id

Esse endpoint retorna uma terefa relacionada ao ID passado na rota.

Obs: Apenas o usuário que criou a tarefa pode pegá-la .

  • Exemplo request headers
      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo response body
        {
            "id": 71,
            "title": "title exemple",
            "description": "description exemple",
            "priority": "Alta",
            "dateLimit": "2022-10-02",
            "userId": 26,
            "created": "2022-02-18T00:44:02.803Z",
            "categoryId": 1,
            "categories": {
                "id": 1,
                "name": "Não iniciado"
            }
        }

Listar todas as tarefas de acordo com a categoria

GET tasks/category/:id

Esse endpoint retorna todas as tarefas criadas pelo usuário relacionadas ao ID da categoria passado na rota.

Obs: Apenas o usuário que criou as tarefas pode visualizar.

  • Exemplo request headers
      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo response body
      [
          {
              "id": 71,
              "title": "title exemple",
              "description": "description exemple",
              "priority": "Alta",
              "dateLimit": "2022-10-02",
              "userId": 26,
              "created": "2022-02-18T00:44:02.803Z",
              "categoryId": 1,
              "categories": {
                  "id": 1,
                  "name": "Não iniciado"
              }
          }
      ]

Atualizar uma tarefa

PUT /tasks/:id

Esse endpoint é responsável por atualizar uma tarefa com o ID fornecido na rota e retorna um objeto com as informacoes atualizadas.

Obs: Apenas o usuário que criou as tarefas pode atualizar.

  • Exemplo request headers

      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo request body

      {
          "title": "title exemple",
          "description": "description exemple",
          "priority": "Baixa",
          "dateLimit": "2022-10-02"
      }
  • Exemplo response body

      {
          "title": "title exemple",
          "description": "description exemple",
          "priority": "baixa",
          "dateLimit": "2022-10-02"
      }

Atualizar a categoria de uma tarefa

PUT /category/:id

Esse endpoint é responsável por atualizar a categoria de uma tarefa com o ID fornecido na rota e retorna um objeto com a mensagem Task updated.

Obs: Apenas o usuário que criou as tarefas pode atualizar.

  • Exemplo request headers

      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo request body

      {
          "categoryId": 1,
      }
  • Exemplo response body

      {
          "message": "Task updated"
      }

Deletar uma tarefa

DELETE /tasks/:id

Esse endpoint é responsável por deletar uma tarefa com o ID fornecido na rota e retorna um objeto com a mensagem Task deleted.

Obs: Apenas o usuário que criou a tarefa pode deletar.

  • Exemplo request headers

      {
        "Authorization": "(Bearer Token)"
      }
  • Exemplo response body

      {
          "message": "Task deleted"
      }

About

Api para gerenciar um banco de dados de usuários e tarefas salvas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages