""" 应用配置模块 使用 Pydantic Settings 管理环境变量 """ from pydantic_settings import BaseSettings from functools import lru_cache class Settings(BaseSettings): """应用配置类""" # 应用基础配置 APP_NAME: str = "ACG Blog" APP_VERSION: str = "0.1.0" DEBUG: bool = True # 数据库配置 DB_HOST: str = "localhost" DB_PORT: int = 5432 DB_USER: str = "postgres" DB_PASSWORD: str = "postgres" DB_NAME: str = "acg_blog" # Redis 配置 REDIS_HOST: str = "localhost" REDIS_PORT: int = 6379 REDIS_DB: int = 0 # JWT 配置 SECRET_KEY: str = "your-secret-key-change-in-production" ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 REFRESH_TOKEN_EXPIRE_DAYS: int = 7 # CORS 配置 BACKEND_CORS_ORIGINS: list[str] = [ "http://localhost:5173", "http://localhost:3000", ] @property def DATABASE_URL(self) -> str: """生成数据库连接 URL""" return f"postgres://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" @property def DATABASE_URL_ASYNC(self) -> str: """生成异步数据库连接 URL""" return f"asyncpg://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" @property def REDIS_URL(self) -> str: """生成 Redis 连接 URL""" return f"redis://{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DB}" class Config: env_file = ".env" case_sensitive = True @lru_cache() def get_settings() -> Settings: """获取配置单例""" return Settings() settings = get_settings()