diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 7fdf7fb6..d8cbfe2f 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -28,6 +28,20 @@ class Settings(BaseSettings): """Get sync URL by removing asyncpg prefix from DATABASE_URL.""" return self.DATABASE_URL.replace("postgresql+asyncpg://", "postgresql://", 1) + # Admin database — resolutionflow_admin role, BYPASSRLS. + # Used by /admin/* endpoints. Defaults to DATABASE_URL for local dev. + ADMIN_DATABASE_URL: str = "" + + @field_validator("ADMIN_DATABASE_URL", mode="before") + @classmethod + def default_admin_database_url(cls, v: str, info) -> str: + """Fall back to DATABASE_URL if ADMIN_DATABASE_URL is not set.""" + if not v: + return info.data.get("DATABASE_URL", "") + if v.startswith("postgresql://"): + return v.replace("postgresql://", "postgresql+asyncpg://", 1) + return v + # JWT Settings SECRET_KEY: str = _DEFAULT_SECRET_KEY