import os
from typing import List
from pydantic_settings import BaseSettings
from dotenv import load_dotenv

# Загрузка .env файла
load_dotenv()

class Settings(BaseSettings):
    """Настройки приложения"""
    
    # Основные настройки
    DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true"
    HOST: str = os.getenv("HOST", "0.0.0.0")
    PORT: int = int(os.getenv("PORT", "8000"))
    LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")
    
    # CORS
    ALLOWED_ORIGINS: List[str] = [
        "http://localhost:3000",
        "http://localhost:8080",
        "https://localhost:3000",
        "https://localhost:8080"
    ]
    
    # Redis
    REDIS_HOST: str = os.getenv("REDIS_HOST", "localhost")
    REDIS_PORT: int = int(os.getenv("REDIS_PORT", "6379"))
    REDIS_PASSWORD: str = os.getenv("REDIS_PASSWORD", "")
    REDIS_DB: int = int(os.getenv("REDIS_DB", "0"))
    
    # Core Service
    CORE_SERVICE_URL: str = os.getenv("CORE_SERVICE_URL", "http://localhost:8080")
    
    # Документы
    DOCUMENTS_CACHE_TTL: int = int(os.getenv("DOCUMENTS_CACHE_TTL", "86400"))  # 24 часа
    MAX_DOCUMENT_SIZE: int = int(os.getenv("MAX_DOCUMENT_SIZE", "10485760"))  # 10MB
    
    # Пути для файлов
    TEMPLATES_DIR: str = os.getenv("TEMPLATES_DIR", "app/templates")
    OUTPUT_DIR: str = os.getenv("OUTPUT_DIR", "app/output")
    
    # QR коды
    QR_CODE_SIZE: int = int(os.getenv("QR_CODE_SIZE", "10"))
    QR_CODE_BORDER: int = int(os.getenv("QR_CODE_BORDER", "2"))
    
    class Config:
        env_file = ".env"
        case_sensitive = False

# Создание экземпляра настроек
settings = Settings()

# Создание директорий если не существуют
os.makedirs(settings.TEMPLATES_DIR, exist_ok=True)
os.makedirs(settings.OUTPUT_DIR, exist_ok=True)
