from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from .. import models, schemas
from ..database import get_db
from ..services import paper_trading

router = APIRouter(prefix="/api/paper-trades", tags=["paper-trades"])


@router.get("", response_model=list[schemas.PaperTradeOut])
def list_trades(db: Session = Depends(get_db)):
    return db.query(models.PaperTrade).order_by(models.PaperTrade.opened_at.desc()).all()


@router.post("", response_model=schemas.PaperTradeOut)
def open_trade(body: schemas.PaperTradeCreate, db: Session = Depends(get_db)):
    return paper_trading.open_trade(db, body.signal_id, body.quantity)


@router.post("/mark", response_model=list[schemas.PaperTradeOut])
def mark(db: Session = Depends(get_db)):
    """Mark open trades to market; auto-close on stop/target."""
    paper_trading.mark_to_market(db)
    return db.query(models.PaperTrade).order_by(models.PaperTrade.opened_at.desc()).all()


@router.post("/{trade_id}/close", response_model=schemas.PaperTradeOut)
def close(trade_id: int, db: Session = Depends(get_db)):
    return paper_trading.close_trade(db, trade_id)
