P3-1: database.py 统一使用 config.py 中的 Settings,消除配置重复定义

This commit is contained in:
2026-06-26 18:37:58 +08:00
parent 36ffd9004a
commit 5a05b804f2
+9 -31
View File
@@ -1,34 +1,12 @@
import os
from typing import Optional
"""
数据库连接管理
from pydantic_settings import BaseSettings, SettingsConfigDict
P3-1 Fix: 统一使用 config.py 中的 Settings 类,消除配置重复定义。
"""
from app.config import settings
from packages.adapters.sqlalchemy_impl.session import build_session_factory
class DatabaseSettings(BaseSettings):
database_url: str = "postgresql+psycopg://postgres:postgres@postgres:5432/xiaoxia_saas"
pool_size: int = 20
max_overflow: int = 40
pool_timeout: int = 30
pool_recycle: int = 3600
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=False,
extra="ignore",
)
_settings: Optional[DatabaseSettings] = None
def get_database_settings() -> DatabaseSettings:
global _settings
if _settings is None:
env = os.getenv("APP_ENV", "development")
env_file = f".env.{env}" if env != "development" else ".env"
if os.path.exists(env_file):
_settings = DatabaseSettings(_env_file=env_file)
else:
_settings = DatabaseSettings()
return _settings
# P3-1 Fix: 直接使用 settings 中的配置,而不是重复定义
_engine, _SessionLocal = build_session_factory(settings.DATABASE_URL)