from fastapi import APIRouter, Depends, HTTPException, Query import logging from typing import Optional from ..db_engine import model_to_dict from ..dependencies import oauth2_scheme, valid_token router = APIRouter(prefix="/api/v2/evolution", tags=["evolution"]) @router.get("/tracks") async def list_tracks( card_type: Optional[str] = Query(default=None), token: str = Depends(oauth2_scheme), ): if not valid_token(token): logging.warning("Bad Token: [REDACTED]") raise HTTPException(status_code=401, detail="Unauthorized") from ..db_engine import EvolutionTrack query = EvolutionTrack.select() if card_type is not None: query = query.where(EvolutionTrack.card_type == card_type) items = [model_to_dict(t, recurse=False) for t in query] return {"count": len(items), "items": items} @router.get("/tracks/{track_id}") async def get_track(track_id: int, token: str = Depends(oauth2_scheme)): if not valid_token(token): logging.warning("Bad Token: [REDACTED]") raise HTTPException(status_code=401, detail="Unauthorized") from ..db_engine import EvolutionTrack try: track = EvolutionTrack.get_by_id(track_id) except Exception: raise HTTPException(status_code=404, detail=f"Track {track_id} not found") return model_to_dict(track, recurse=False)