Skip to content

A connection gateway with your tennis ranking API microservices with rabbitMQ, being able to authenticate, challenge players in your category and track your progress

Notifications You must be signed in to change notification settings

MatheusVict/API-Gateway

Repository files navigation

API gateway

api que faz a conexão entre os microserviços e o cliente, com uma aplicação de rankings inteligentes para jogadores de Tennis

microserviços:

Informações importantes:

node: v18.12.1
nest: 9.1.4
RabbitMQ 3.11.6
  • Crie uma arquivo .env seguindo o arquivo .env.example
    • AWS_RABBITMQ= string de conexão com RabbitMQ
    • JWT_PRIVATE_KEY= Chave privada JWT
    • JWT_EXPERIATION_TIME_TOKEN= Tempo de expiração do token
    • PORT_APP= Porta da aplicação

Comandos:

Iniciação do projeto no modo watch

yarn start:dev or npm run start:dev

Build para JavaScript

yarn build or npm run build

Teste da aplicação(ainda sendo finalizado)

yarn test or npm run test

OBS: para funcionar é preciso que todos os microserviços estejam rodando(se utilizando do mesmo comando de iniciação citado acima)

Rotas:

Auth:

  • Post: /auth/login

    Autenticação

    • Body:
    {
      "email": "email de um jogador registrado(criação de jogadores não precisa de autenticação)",
      "password": "Informe qualquer valor pois a feature de usuário ainda está sendo implementada"
    }
    • Irá receber um token, passe-o nas rotas através do Bearer Token

Categorias:

  • Post: /categories

    Criação

    • Body:
     {
      "category": "Nome da categoria",
      "description": "",
      "events": [{
      	"name": "VITORIA",
      	"operetion": "+",
      	"value": Pontos ganhos: Number
      },
      {
      	"name": "DERROTA",
      	"operetion": "-",
      	"value": Pontos perdidos: Number
      }]
    }
  • Get: /categories?idCategory={ID da categoria}

    Busca

    • Se passado retorna a categoria desejada
    • Se não retorna todas
  • Put: /categories/{ID da categoria}

    Atualização

    • Body:
     {
      "category": "Nome da categoria",
      "description": "",
      "events": [{
      	"name": "VITORIA",
      	"operetion": "+",
      	"value": Pontos ganhos: Number
      },
      {
      	"name": "DERROTA",
      	"operetion": "-",
      	"value": Pontos perdidos: Number
      }]
    }
  • Delete: /categories/{ID da categori}

    Deleção

Jogadores:

  • Post: /players

    Criação

    • Body:
    {
      "phoneNumber": "",
      "email": "",
      "name": "",
      "category": "ID da categoria"
    }
  • Get: /players?idplayer={ID do jogador}

    Busca

    • Se passado retorna o jogador desejado
    • Se não retorna todos
  • Put: /players/{ID do jogador}

    Atualização

    • Body
    {
      "phoneNumber": "",
      "email": "",
      "category": "ID da categoria"
    }
  • Delete: /players/{ID do jogador}

    Deleção

  • Post: /players/{ID do jogador}/upload

    Associar foto a usuários -Body: File

Desafios:

  • Post: /challenges

    Criação

    • Body:
    {
      "DateTimeChallenge": "2023-01-12T09:00:00",
      "requester": "ID do jogador que solicitou o desafio",
      "category": "ID da categoria",
      "players": [
      {
        "_id": "ID do jogador"
      },
      {
         "_id": "ID do jogador"
      }]
    }
  • Get: /challenges/?idplayer={ID do jogador}

    Busca

    • Se passado retorna todos os desafios do usuário
    • Se não retorna todos os desafios
  • Put: /challenges/{ID do desafio}

    Atualização

    • Body:
    {
      "status": "Status da resposta, ACEITO ou NEGADO"
    }
  • Delete: /challenges/{ID do desafio}

    Deleção

  • Post: /challenges/{ID do desafio}/match

    Associar um partida um desafio

    • Body:
    {
      "def": "ID do vencedor",
      "result": [{
        "set": "6-4"
      },{
        "set": "6-3"
      }]
    }

Rankings:

  • Get: /rankings/?idCategory={ID da categoria}&dataRef={Data de referência para consulta no ranking

    Consulta

    • idCategory é obrigatorio
    • dataRef é opcional(se não informado a data atual será preenchida)

About

A connection gateway with your tennis ranking API microservices with rabbitMQ, being able to authenticate, challenge players in your category and track your progress

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published