MCPcopy Index your code
hub / github.com/digitalinnovationone/workout_api

github.com/digitalinnovationone/workout_api @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
46 symbols 242 edges 26 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FastAPI

Quem é o FastAPi?

Framework FastAPI, alta performance, fácil de aprender, fácil de codar, pronto para produção. FastAPI é um moderno e rápido (alta performance) framework web para construção de APIs com Python 3.6 ou superior, baseado nos type hints padrões do Python.

Async

Código assíncrono apenas significa que a linguagem tem um jeito de dizer para o computador / programa que em certo ponto, ele terá que esperar por algo para finalizar em outro lugar

Projeto

WorkoutAPI

Esta é uma API de competição de crossfit chamada WorkoutAPI (isso mesmo rs, eu acabei unificando duas coisas que gosto: codar e treinar). É uma API pequena, devido a ser um projeto mais hands-on e simplificado nós desenvolveremos uma API de poucas tabelas, mas com o necessário para você aprender como utilizar o FastAPI.

Modelagem de entidade e relacionamento - MER

MER

Stack da API

A API foi desenvolvida utilizando o fastapi (async), junto das seguintes libs: alembic, SQLAlchemy, pydantic. Para salvar os dados está sendo utilizando o postgres, por meio do docker.

Execução da API

Para executar o projeto, utilizei a pyenv, com a versão 3.11.4 do python para o ambiente virtual.

Caso opte por usar pyenv, após instalar, execute:

pyenv virtualenv 3.11.4 workoutapi
pyenv activate workoutapi
pip install -r requirements.txt

Para subir o banco de dados, caso não tenha o docker-compose instalado, faça a instalação e logo em seguida, execute:

make run-docker

Para criar uma migration nova, execute:

make create-migrations d="nome_da_migration"

Para criar o banco de dados, execute:

make run-migrations

API

Para subir a API, execute:

make run

e acesse: http://127.0.0.1:8000/docs

Desafio Final

- adicionar query parameters nos endpoints
    - atleta
        - nome
        - cpf
- customizar response de retorno de endpoints
    - get all
        - atleta
            - nome
            - centro_treinamento
            - categoria
- Manipular exceção de integridade dos dados em cada módulo/tabela
    - sqlalchemy.exc.IntegrityError e devolver a seguinte mensagem: “Já existe um atleta cadastrado com o cpf: x”
    - status_code: 303
- Adicionar paginação utilizando a lib: fastapi-pagination
    - limit e offset

Referências

FastAPI: https://fastapi.tiangolo.com/

Pydantic: https://docs.pydantic.dev/latest/

SQLAlchemy: https://docs.sqlalchemy.org/en/20/

Alembic: https://alembic.sqlalchemy.org/en/latest/

Fastapi-pagination: https://uriyyo-fastapi-pagination.netlify.app/

Core symbols most depended-on inside this repo

run_migrations_offline
called by 1
alembic/env.py
run_async_migrations
called by 1
alembic/env.py
run_migrations_online
called by 1
alembic/env.py
do_run_migrations
called by 0
alembic/env.py
upgrade
called by 0
alembic/versions/c006e8463eb4_init_db.py
downgrade
called by 0
alembic/versions/c006e8463eb4_init_db.py
get_session
called by 0
workout_api/configs/database.py
post
called by 0
workout_api/atleta/controller.py

Shape

Function 18
Class 17
Route 11

Languages

Python100%

Modules by API surface

workout_api/atleta/controller.py10 symbols
workout_api/centro_treinamento/controller.py6 symbols
workout_api/categorias/controller.py6 symbols
workout_api/atleta/schemas.py4 symbols
alembic/env.py4 symbols
workout_api/contrib/schemas.py3 symbols
workout_api/centro_treinamento/schemas.py3 symbols
workout_api/categorias/schemas.py2 symbols
alembic/versions/c006e8463eb4_init_db.py2 symbols
workout_api/contrib/models.py1 symbols
workout_api/configs/settings.py1 symbols
workout_api/configs/database.py1 symbols

For agents

$ claude mcp add workout_api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact