"""Model repository"""
from typing import Optional, List
from sqlalchemy.orm import Session
from app.core.db.models.model import Model


class ModelRepository:
    """Repository for ML model operations"""
    
    def __init__(self, db: Session):
        self.db = db
    
    def get_by_id(self, model_id: int) -> Optional[Model]:
        """Get model by ID"""
        return self.db.query(Model).filter(Model.id == model_id).first()
    
    def get_by_version(self, version: str) -> Optional[Model]:
        """Get model by version"""
        return self.db.query(Model).filter(Model.version == version).first()
    
    def get_latest(self) -> Optional[Model]:
        """Get latest active model"""
        return self.db.query(Model).filter(
            Model.is_active == 1
        ).order_by(Model.trained_at.desc()).first()
    
    def get_all(self) -> List[Model]:
        """Get all models"""
        return self.db.query(Model).order_by(Model.trained_at.desc()).all()
    
    def create(self, model: Model) -> Model:
        """Create a new model"""
        self.db.add(model)
        self.db.commit()
        self.db.refresh(model)
        return model

