feat: add Doris Barbell v1 scaffold
This commit is contained in:
111
home/doris-barbell/app/routes/api.py
Normal file
111
home/doris-barbell/app/routes/api.py
Normal file
@@ -0,0 +1,111 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import APIRouter, HTTPException, Request
|
||||
|
||||
from app.models import (
|
||||
ExerciseTemplateCreate,
|
||||
MeasurementEntryCreate,
|
||||
ProfileUpdate,
|
||||
RoutineCreate,
|
||||
WeightEntryCreate,
|
||||
WorkoutCreate,
|
||||
)
|
||||
|
||||
router = APIRouter(prefix='/api')
|
||||
|
||||
|
||||
@router.get('/health')
|
||||
def health() -> dict[str, str]:
|
||||
return {'status': 'ok'}
|
||||
|
||||
|
||||
@router.get('/dashboard/summary')
|
||||
def dashboard_summary(request: Request) -> dict:
|
||||
return request.app.state.store.dashboard_summary()
|
||||
|
||||
|
||||
@router.put('/profile/{user_id}')
|
||||
def update_profile(user_id: str, payload: ProfileUpdate, request: Request) -> dict:
|
||||
try:
|
||||
return request.app.state.store.update_profile(user_id, payload.model_dump())
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.post('/profile/{user_id}/weight', status_code=201)
|
||||
def add_weight_entry(user_id: str, payload: WeightEntryCreate, request: Request) -> dict:
|
||||
try:
|
||||
return request.app.state.store.add_weight_entry(user_id, payload.model_dump())
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.get('/history/{user_id}/weights')
|
||||
def weight_history(user_id: str, request: Request) -> list[dict]:
|
||||
try:
|
||||
return request.app.state.store.weight_history(user_id)
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.post('/profile/{user_id}/measurements', status_code=201)
|
||||
def add_measurement_entry(user_id: str, payload: MeasurementEntryCreate, request: Request) -> dict:
|
||||
try:
|
||||
return request.app.state.store.add_measurement_entry(user_id, payload.model_dump())
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.get('/history/{user_id}/measurements')
|
||||
def measurement_history(user_id: str, request: Request) -> list[dict]:
|
||||
try:
|
||||
return request.app.state.store.measurement_history(user_id)
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.post('/exercises/templates', status_code=201)
|
||||
def create_exercise_template(payload: ExerciseTemplateCreate, request: Request) -> dict:
|
||||
return request.app.state.store.add_exercise_template(payload.model_dump())
|
||||
|
||||
|
||||
@router.get('/exercises/templates')
|
||||
def list_exercise_templates(request: Request) -> list[dict]:
|
||||
return request.app.state.store.list_exercise_templates()
|
||||
|
||||
|
||||
@router.post('/routines', status_code=201)
|
||||
def create_routine(payload: RoutineCreate, request: Request) -> dict:
|
||||
try:
|
||||
return request.app.state.store.add_routine(payload.model_dump())
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.get('/routines')
|
||||
def list_routines(request: Request) -> list[dict]:
|
||||
return request.app.state.store.list_routines()
|
||||
|
||||
|
||||
@router.post('/workouts', status_code=201)
|
||||
def add_workout(payload: WorkoutCreate, request: Request) -> dict:
|
||||
try:
|
||||
return request.app.state.store.add_workout(payload.model_dump())
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.get('/history/{user_id}/workouts')
|
||||
def workout_history(user_id: str, request: Request) -> list[dict]:
|
||||
try:
|
||||
return request.app.state.store.workout_history(user_id)
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
|
||||
|
||||
@router.get('/progression/{user_id}/exercises')
|
||||
def exercise_progression(user_id: str, request: Request) -> list[dict]:
|
||||
try:
|
||||
return request.app.state.store.exercise_progression(user_id)
|
||||
except KeyError as exc:
|
||||
raise HTTPException(status_code=404, detail='Unknown user') from exc
|
||||
Reference in New Issue
Block a user