from datetime import datetime
from sqlalchemy.orm import Session
from app.models.apikey import ApiKey
from app.config import settings

class DecartService:
    @staticmethod
    def get_active_key(db: Session) -> ApiKey | None:
        return db.query(ApiKey).filter(
            ApiKey.is_active == True,
            ApiKey.provider == "decart"
        ).first()

    @staticmethod
    def get_client_config(db: Session) -> dict:
        """
        Returns configuration payload for Decart Android SDK client
        """
        active_key = DecartService.get_active_key(db)
        return {
            "status": "success",
            "provider": "decart",
            "model": settings.DECART_DEFAULT_MODEL,  # "lucy-vton-3.5" (RealtimeModels.LUCY_VTON_3_5)
            "api_key": active_key.api_key if active_key else "",
            "has_valid_key": active_key is not None and len(active_key.api_key) > 5,
            "webrtc_endpoint": "wss://livekit.decart.ai",
            "resolution": "720p",
            "fps_target": 30,
            "enhance_prompt": True
        }

    @staticmethod
    def set_active_key(db: Session, key_id: int) -> bool:
        # Set all inactive
        db.query(ApiKey).filter(ApiKey.provider == "decart").update({"is_active": False})
        # Set specific active
        key = db.query(ApiKey).filter(ApiKey.id == key_id).first()
        if key:
            key.is_active = True
            db.commit()
            return True
        db.commit()
        return False
