Files
xiaoxia-saas/apps/api/app/core/database.py
T
2026-06-21 06:52:19 +08:00

35 lines
941 B
Python

import os
from typing import Optional
from pydantic_settings import BaseSettings, SettingsConfigDict
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