Crypto-Mikael / API-WITH-TYPESCRIPT

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Boas vindas ao Repositorio do API com TypeScript!

Esse projeto é uma API basica baseada em uma API já existente chamada julius-api, ela tem como intuito guardar informações de gastos de um usuário no cotidiano.

Sumário

Esse projeto tem como intuito aprender novas tecnologias e reforçar as já aprendidas sendo elas:

  • NodeJS
  • TypeScript
  • Postgres
  • Design Pattern (DDD/Clean Architecture)
  • Docker

O que foi desenvolvido

Foi arquitetado, uma API de CRUD de usuários com laçamentos de gastos (com typeorm). Para o Usuário foi desenvolvido alguns endpoints (seguindo o princípios do REST) que estarão conectados ao seu banco de dados local ou no docker.

Endpoints do projeto

1 - Requisição ao endpoint POST /usuario

GETUSER

Os seguintes pontos são avaliados:

  • O campo nome deverá existir, não estar em branco e ser uma string com no mínimo de 8 caracteres;
  • O campo email deverá existir, não estar em branco e ser um tipo email;
  • Quando o campo email já existir o endpoint retornará o seguinte erro:
{
  "message": "Email already exists"
}
  • Caso contrário, retornará um json com o usuário criado
{
  "nome": "MiguelCampos",
  "email": "MiguelCampos@email.com",
  "id": 1
}

2 - Requisição ao endpoint GET /usuario

GETUSERS

  • Quando algum usuário existir o endpoint retornará o seguinte:
[
  {
    "nome": "MiguelCampos",
    "email": "MiguelCampos@email.com",
    "id": 1
  },
  {
    "nome": "GabrielRodrigues",
    "email": "GabrielRodrigues@email.com",
    "id": 2
  },
  {
    "nome": "RafaelSantos",
    "email": "RafaelSantos@email.com",
    "id": 3
  },
  {
    "nome": "PedroSouza",
    "email": "PedroSouza@email.com",
    "id": 4
  }
]

3 - Requisição ao endpoint POST /lancamento

POSTLAUNCHS

Os seguintes pontos são avaliados:

  • O campo idUsuario deverá existir, não estar em branco e ser um tipo number;
  • O campo valor deverá existir, não estar em branco e ser um tipo number;
  • O campo descricao deverá existir, não estar em branco e ser um tipo string;
  • O campo data deverá existir, não estar em branco e ser um tipo string;
  • Quando o campo idUsuario não existir o endpoint retornará o seguinte erro:
{
  "message": "User not found"
}

4 - Requisição ao endpoint GET /usuario/lancamentos/:ID

GETLAUNCHS

Os seguintes pontos são avaliados:

  • Quando o parametro ID não existir o endpoint retornará o seguinte:
{
  "message": "User not found"
}
  • Caso contrário, retornará um json com o usuário com seus laçamentos
{
  "nome": "MiguelCampos",
  "email": "MiguelCampos@email.com",
  "id": 1,
  "lancamento": [
    {
      "valor": 300.32,
      "descricao": "VENDER moto antiga",
      "data": "2020-08-25T03:00:00.000Z",
      "id": 1
    },
    {
      "valor": -150.9,
      "descricao": "COMPRAR passage de avião",
      "data": "2020-08-25T03:00:00.000Z",
      "id": 2
    },
    {
      "valor": -100.2,
      "descricao": "COMPRAR coisas no mercado",
      "data": "2020-08-25T03:00:00.000Z",
      "id": 3
    }
  ]
}

5 - Requisição ao endpoint PUT /usuario/:ID

UPDATEUSER

Os seguintes pontos são avaliados:

  • O campo nome deverá existir, não estar em branco e ser um tipo string;
  • Quando o parametro ID não existir o endpoint retornará o seguinte:
{
  "message": "User not found"
}
  • Caso contrário, retornará um json com o usuário com email do usuario deletado:
{
  "nome": "NOME MODIFICADO",
  "email": "GabrielRodrigues@email.com",
  "id": 11
}

6 - Requisição ao endpoint DELETE /usuario/:ID

DELETEUSER

Os seguintes pontos são avaliados:

  • Quando o parametro ID não existir o endpoint retornará o seguinte:
{
  "message": "User not found"
}
  • Caso contrário, retornará um json com o usuário com email do usuario deletado:
{
  "message": "User with email: [MiguelCampos@email.com] deleted"
}

Agradecimentos

Agradeço imensamente pela CreativeCode pela iniciativa de começar esse projeto e pela toda equipe da Trybe que vem me formando como um profissonal altamente competente.

Encontre-me

Linkding Email

About


Languages

Language:TypeScript 98.9%Language:Dockerfile 1.1%