from datetime import datetime
from sqlalchemy import Column, Integer, String, Boolean, DateTime
from app.database import Base
from app.utils.timezone import jakarta_now, to_jakarta_iso

class ApiKey(Base):
    __tablename__ = "api_keys"
    
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, default="Decart Production Key")
    provider = Column(String, default="decart")
    model_name = Column(String, default="lucy-vton-3.5")
    api_key = Column(String, nullable=False)
    is_active = Column(Boolean, default=True)
    daily_quota = Column(Integer, default=5000)
    usage_count = Column(Integer, default=0)
    last_used_at = Column(DateTime, nullable=True)
    created_at = Column(DateTime, default=jakarta_now)

    def to_dict(self, mask_key: bool = True):
        key_display = self.api_key
        if mask_key and len(self.api_key) > 8:
            key_display = self.api_key[:4] + "*" * (len(self.api_key) - 8) + self.api_key[-4:]
        return {
            "id": self.id,
            "name": self.name,
            "provider": self.provider,
            "model_name": self.model_name,
            "api_key": key_display,
            "raw_key": self.api_key if not mask_key else None,
            "is_active": self.is_active,
            "daily_quota": self.daily_quota,
            "usage_count": self.usage_count,
            "last_used_at": to_jakarta_iso(self.last_used_at),
            "created_at": to_jakarta_iso(self.created_at)
        }
