DEV Community

Cover image for Identificando os objetos da melhor API de tabela de campeonatos que você já viu!
anastacio_dev
anastacio_dev

Posted on

Identificando os objetos da melhor API de tabela de campeonatos que você já viu!

No último texto, finalizamos com uma ideia solta de como poderia ser os nossos JSONs de entrada e saida.

Fui além e pedi para uma LLM modelar aqueles requisitos em formato JSON, para que as coisas ficassem ainda mais claras. Vamos ver se isso nos ajuda?

{
  "nomeCampeonato": "String",
  "equipes": [
    {
      "id": "Integer",
      "nome": "String",
      "localizacao": "String",
      "grupo": "String",
      "subGrupo": "String"
    },
    ...
  ],
  "formatoCampeonato": {
    "divisaoPorGrupos": "Integer",
    "grupos": [
      {
        "id": "Integer",
        "nome": "String",
        "equipes": ["Integer"],

      },
    ],
    "turnosDentroGrupo": "Integer",
    "turnosEntreGrupos": "Integer",
    "sorteioGrupos": "Boolean"
  },
  "calendarioConfig": {
    "tabelaOtimizada": "Boolean",
    "totalJogosPorDia": "Integer",
    "diasDescanso": "Integer"
  }
}
Enter fullscreen mode Exit fullscreen mode

Vamos entender o que a LLM nos trouxe:

  • Uma lista chamada equipes, contendo objetos com o nome do time e a sua localização;
  • Um objeto chamado formatoCampeonato, que que define em quantos grupos os times vão se dividir e nos traz, embutidos, um objeto grupo;
  • Uma lista chamada grupos, que contém os grupos onde estão organizadas as equipes. Pense que no Brasileirão, por exemplo, teríamos apenas um objeto desses, com os 20 times. Já na Libertadores, teríamos 8 objetos "grupo", com 4 times cada.
  • Dentro de formatoCampeonato também definimos se, e quantos turnos haverá entre times dentro do mesmo grupo e entre times de grupos diferentes. Lembre que no Paulistão (até 2024), por exemplo, são 4 grupos onde os times jogam um turno contra os times dos outros grupos e não jogam contra os times do próprio grupo.
  • formatoCampeonato também define se somos nós quem teremos que fazer o sorteio dos grupos ou se o usuário já vai mandar tudo pronto. É por isso que temos os campos de grupo e subgrupo lá no objeto equipes.
  • E, pra finalizar, o objeto calendarioConfig, que define questões de calendário, como quantidade de jogos por dia, quantidade de dias de descanso que um time deve ter entre um jogo e outro e o nosso "tempero secreto": a otimização de viagens!

Bem, se você já estudou um pouco de orientação a objetos, sabe que esse objetos JSON que modelamos aqui são grandes candidatos a se tornarem as classes do nosso código, certo?

No próximo texto, vamos analisar se cada objeto JSON desses é elegível para gerar uma classe no nosso backend e também vamos falar um pouco da arquitetura do nosso Tabelão.

Prosseguimos.

Top comments (0)