feat: add Doris Barbell v1 scaffold

This commit is contained in:
Fizzlepoof
2026-05-21 23:32:10 +00:00
parent d5cfdbe8b5
commit 9dc5a9a8a3
21 changed files with 2175 additions and 0 deletions

View 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