Guardians-DSC / LCCBot

Bot do discord para acompanhamento do status do LCC.
MIT License
9 stars 1 forks source link

Funcionalidade schedule na API com mock #21

Closed Thulio-Carvalho closed 4 years ago

Thulio-Carvalho commented 4 years ago

Descreva a feature em detalhes

Deve ser implementado na API a funcionalidade de obtenção de horários no dia atual. Para simplificar: será necessário apenas a criação de um endpoint GET /schedule que deverá retornar um json simulando os horários de aulas no dia por LCC.

Importante: Será ótimo se na finalização dessa issue tivermos uma estrutura de código que facilite modificações posteriores. Recomendo fortemente estudar um pouco sobre princípios de design de código.

Necessidade da feature:

Essa feature é a principal do primeiro ciclo do desenvolvimento.

Como ela pode ser implementada:

Um boa forma de desenvolver essa funcionalidade pode ser tentando replicar as estruturas de projetos de APIs RESTful (com algumas ressalvas, pois no nosso caso não é necessário persistir dados em banco, por exemplo). Existem diversos tutorias de codificação de APIs REST em python com flask, encontrei uma que parece ser boa:

Obs: Acredito que seguir um tutorial bem explicado para construção de uma API REST pode ser bastante útil para aprender a desenvolver essa nossa funcionalidade específica.

O retorno json esperado do endpoint /schedule pode seguir o exemplo:

{
    "LCC1": [],
    "LCC2": [{
            "course": "Lab. de Programação 2",
            "startTime": "10:00",
            "endTime": "12:00"
        },
        {
            "course": "LEDA",
            "startTime": "14:00",
            "endTime": "16:00"
        }
    ],
    "LCC3": []
}
Thulio-Carvalho commented 4 years ago

Se for detectada qualquer dificuldade maior nessa issue, podemos também discutir formas de dividir em mais issues.

Acho que dedicação de um tempo maior a essa issue - pensando sempre em como melhorar o design do código pode ser muito relevante para praticar alguns princípios básicos de clean coding. De qualquer forma, tudo que referenciei até agora deve ser bastante novo para alguém que ainda não pagou Prog2, por exemplo. Então sinta-se livre para tirar qualquer dúvida, fazer sugestões, críticas, etc.

Btw, Acho que iterar mentalmente algumas vezes sobre o código feito, a fim de tentar identificar possíveis mudanças que podem ser boas e especificamente o motivo de serem boas é extremamente relevante para aprender bem.

mluizamarinho commented 4 years ago

Como faço para retornar o json e o ping em um único arquivo(api.py)?

Thulio-Carvalho commented 4 years ago

Cada funcionalidade (ping e schedule) deve ter o código em um arquivo serparado dentro de routes. O api.py deve identificar essas novas rotas adicionadas mesmo em arquivos diferentes e cada um deles tem a responsabilidade de retornar os dados na função de rota definida. Ou seja, a ideia n é retornar no api.py mesmo.

Thulio-Carvalho commented 4 years ago

Acho que o jeito de fazer isso é usando blueprints:

https://stackoverflow.com/questions/11994325/how-to-divide-flask-app-into-multiple-py-files