"""Model API endpoints"""
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.core.db.database import get_db
from app.core.db.repositories.model_repository import ModelRepository
from pydantic import BaseModel
from typing import Optional, Dict, Any

router = APIRouter()


class ModelResponse(BaseModel):
    id: int
    version: str
    model_type: str
    parameters: Optional[Dict[str, Any]]
    train_accuracy: Optional[float]
    test_accuracy: Optional[float]
    train_logloss: Optional[float]
    test_logloss: Optional[float]
    trained_at: str
    trained_on_matches: Optional[int]
    is_active: int
    
    class Config:
        from_attributes = True


@router.get("/models")
async def get_models(db: Session = Depends(get_db)):
    """Get all models"""
    model_repo = ModelRepository(db)
    models = model_repo.get_all()
    
    return [ModelResponse(
        id=m.id,
        version=m.version,
        model_type=m.model_type,
        parameters=m.parameters,
        train_accuracy=m.train_accuracy,
        test_accuracy=m.test_accuracy,
        train_logloss=m.train_logloss,
        test_logloss=m.test_logloss,
        trained_at=m.trained_at.isoformat() if m.trained_at else "",
        trained_on_matches=m.trained_on_matches,
        is_active=m.is_active
    ) for m in models]

