"""Order endpoints.""" from fastapi import APIRouter, Request from shared.sa_models import OrderRow, SignalRow from sqlalchemy import select router = APIRouter() @router.get("/") async def get_orders(request: Request, limit: int = 50): """Get recent orders.""" db = request.app.state.db async with db.get_session() as session: stmt = select(OrderRow).order_by(OrderRow.created_at.desc()).limit(limit) result = await session.execute(stmt) rows = result.scalars().all() return [ { "id": r.id, "signal_id": r.signal_id, "symbol": r.symbol, "side": r.side, "type": r.type, "price": float(r.price), "quantity": float(r.quantity), "status": r.status, "created_at": r.created_at.isoformat() if r.created_at else None, "filled_at": r.filled_at.isoformat() if r.filled_at else None, } for r in rows ] @router.get("/signals") async def get_signals(request: Request, limit: int = 50): """Get recent signals.""" db = request.app.state.db async with db.get_session() as session: stmt = select(SignalRow).order_by(SignalRow.created_at.desc()).limit(limit) result = await session.execute(stmt) rows = result.scalars().all() return [ { "id": r.id, "strategy": r.strategy, "symbol": r.symbol, "side": r.side, "price": float(r.price), "quantity": float(r.quantity), "reason": r.reason, "created_at": r.created_at.isoformat() if r.created_at else None, } for r in rows ]