from pydantic_settings import BaseSettings
from typing import List
import os

class Settings(BaseSettings):
    # 基础配置
    ENVIRONMENT: str = "development"
    DEBUG: bool = True

    # 数据库配置
    DATABASE_URL: str = "mysql+pymysql://mytest_db:mytest_db@101.126.85.76:3306/mytest_db"

    # Redis配置
    REDIS_URL: str = "redis://localhost:6379"

    # JWT配置
    JWT_SECRET_KEY: str = "your-super-secret-jwt-key-change-in-production"
    JWT_ALGORITHM: str = "HS256"
    JWT_EXPIRE_MINUTES: int = 30
    JWT_REFRESH_EXPIRE_DAYS: int = 7

    # CORS配置
    ALLOWED_HOSTS: List[str] = ["*"]  # 允许所有域名访问

    # 文件上传配置
    MAX_FILE_SIZE: int = 10 * 1024 * 1024  # 10MB
    UPLOAD_DIR: str = "uploads"
    ALLOWED_EXTENSIONS: List[str] = [
        # 图片
        ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp", ".svg",
        # 文档
        ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx",
        ".txt", ".rtf", ".csv",
        # 压缩文件
        ".zip", ".rar", ".7z", ".tar", ".gz",
        # 音频
        ".mp3", ".wav", ".flac", ".aac", ".ogg",
        # 视频
        ".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv",
        # 代码文件
        ".py", ".js", ".html", ".css", ".json", ".xml", ".yaml", ".yml",
        ".java", ".cpp", ".c", ".h", ".cs", ".php", ".rb", ".go",
        ".sql", ".sh", ".bat", ".ps1", ".md", ".log"
    ]

    # 安全配置
    BCRYPT_ROUNDS: int = 12

    class Config:
        env_file = ".env"
        case_sensitive = True
        extra = "allow"  # 允许额外的环境变量

settings = Settings()