from pydantic_settings import BaseSettings, SettingsConfigDict class DatabaseConfig(BaseSettings): """数据库配置基类""" host: str port: int = 3306 user: str password: str db: str charset: str = "utf8mb4" minsize: int = 5 maxsize: int = 20 model_config = SettingsConfigDict( env_prefix="", case_sensitive=False, extra="ignore" ) def to_dict(self) -> dict: """转换为字典格式,用于兼容旧代码""" return { "host": self.host, "port": self.port, "user": self.user, "password": self.password, "db": self.db, "charset": self.charset, "minsize": self.minsize, "maxsize": self.maxsize, } class AigcDatabaseConfig(DatabaseConfig): """AIGC 数据库配置""" model_config = SettingsConfigDict( env_prefix="AIGC_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) class LongVideoDatabaseConfig(DatabaseConfig): """长视频数据库配置""" model_config = SettingsConfigDict( env_prefix="LONG_VIDEO_DB_", env_file=".env", case_sensitive=False, extra="ignore", ) class LongArticlesDatabaseConfig(DatabaseConfig): """长文数据库配置""" model_config = SettingsConfigDict( env_prefix="LONG_ARTICLES_DB_", env_file=".env", case_sensitive=False, extra="ignore", ) class PiaoquanCrawlerDatabaseConfig(DatabaseConfig): """票圈爬虫数据库配置""" model_config = SettingsConfigDict( env_prefix="PIAOQUAN_CRAWLER_DB_", env_file=".env", case_sensitive=False, extra="ignore", ) class GrowthDatabaseConfig(DatabaseConfig): """增长数据库配置""" model_config = SettingsConfigDict( env_prefix="GROWTH_DB_", env_file=".env", case_sensitive=False, extra="ignore" )