from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")

    DATABASE_URL: str
    SECRET_KEY: str
    ACCESS_TOKEN_EXPIRE_MINUTES: int = 60
    REFRESH_TOKEN_EXPIRE_DAYS: int = 30
    ENVIRONMENT: str = "development"
    TIMEZONE: str = "Asia/Jakarta"
    STORAGE_TYPE: str = "local"
    STORAGE_PATH: str = "./storage"
    MAX_UPLOAD_SIZE_MB: int = 10
    GDRIVE_TOKEN_PATH: str = "./gdrive_token.json"
    GDRIVE_ROOT_FOLDER_ID: str = ""
    GEMINI_API_KEY: str = ""
    GROQ_API_KEY: str = ""
    GEMINI_MODEL: str = "gemini-2.5-flash"
    SUPERADMIN_EMAIL: str = "admin@spbu.com"
    SUPERADMIN_PASSWORD: str
    SUPERADMIN_NAME: str = "Super Admin"
    CORS_ORIGINS: str = "http://localhost:8007,http://127.0.0.1:8007"

    @property
    def is_production(self) -> bool:
        return self.ENVIRONMENT == "production"


settings = Settings()
