from fastapi import APIRouter, HTTPException, status, Depends from sqlalchemy.orm import Session from typing import List from app.schemas import Puck as PuckSchema, Sample as SampleSchema, SampleEventCreate 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