"""Exchange API endpoints.""" from typing import List from fastapi import APIRouter, HTTPException from sqlalchemy import select from ..core.schemas import ExchangeResponse from src.core.database import Exchange, get_database router = APIRouter() @router.get("/", response_model=List[ExchangeResponse]) async def list_exchanges(): """List all exchanges.""" try: db = get_database() async with db.get_session() as session: stmt = select(Exchange).order_by(Exchange.name) result = await session.execute(stmt) exchanges = result.scalars().all() return [ExchangeResponse.model_validate(e) for e in exchanges] except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @router.get("/{exchange_id}", response_model=ExchangeResponse) async def get_exchange(exchange_id: int): """Get exchange by ID.""" try: db = get_database() async with db.get_session() as session: stmt = select(Exchange).where(Exchange.id == exchange_id) result = await session.execute(stmt) exchange = result.scalar_one_or_none() if not exchange: raise HTTPException(status_code=404, detail="Exchange not found") return ExchangeResponse.model_validate(exchange) except HTTPException: raise except Exception as e: raise HTTPException(status_code=500, detail=str(e))