from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session from typing import List from app.schemas import Puck as PuckSchema, Sample as SampleSchema from app.models import ( Puck as PuckModel, Sample as SampleModel, SampleEvent as SampleEventModel, ) from app.dependencies import get_db import logging router = APIRouter() @router.get("/{puck_id}/samples", response_model=List[SampleSchema]) async def get_samples_with_events(puck_id: str, db: Session = Depends(get_db)): puck = db.query(PuckModel).filter(PuckModel.id == puck_id).first() if not puck: raise HTTPException(status_code=404, detail="Puck not found") samples = db.query(SampleModel).filter(SampleModel.puck_id == puck_id).all() for sample in samples: sample.events = ( db.query(SampleEventModel) .filter(SampleEventModel.sample_id == sample.id) .all() ) return samples @router.get("/pucks-samples", response_model=List[PuckSchema]) async def get_all_pucks_with_samples_and_events(db: Session = Depends(get_db)): logging.info("Fetching all pucks with samples and events") pucks = db.query(PuckModel).all() logging.info(f"Found {len(pucks)} pucks in the database") for puck in pucks: logging.info(f"Puck ID: {puck.id}, Name: {puck.puck_name}") if not pucks: raise HTTPException( status_code=404, detail="No pucks found in the database" ) # More descriptive return pucks