fix: convert DATABASE_URL_SYNC from property to overridable field for Alembic superuser URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -23,10 +23,19 @@ class Settings(BaseSettings):
|
|||||||
return v.replace("postgresql://", "postgresql+asyncpg://", 1)
|
return v.replace("postgresql://", "postgresql+asyncpg://", 1)
|
||||||
return v
|
return v
|
||||||
|
|
||||||
@property
|
# Sync URL for Alembic migrations. Defaults to DATABASE_URL (sync-converted).
|
||||||
def DATABASE_URL_SYNC(self) -> str:
|
# Set explicitly in .env to use a different role for migrations (e.g. superuser)
|
||||||
"""Get sync URL by removing asyncpg prefix from DATABASE_URL."""
|
# when DATABASE_URL has been switched to the app role.
|
||||||
return self.DATABASE_URL.replace("postgresql+asyncpg://", "postgresql://", 1)
|
DATABASE_URL_SYNC: str = ""
|
||||||
|
|
||||||
|
@field_validator("DATABASE_URL_SYNC", mode="before")
|
||||||
|
@classmethod
|
||||||
|
def default_database_url_sync(cls, v: str, info) -> str:
|
||||||
|
"""Fall back to sync-converted DATABASE_URL if not explicitly set."""
|
||||||
|
if not v:
|
||||||
|
base = info.data.get("DATABASE_URL", "")
|
||||||
|
return base.replace("postgresql+asyncpg://", "postgresql://", 1)
|
||||||
|
return v
|
||||||
|
|
||||||
# Admin database — resolutionflow_admin role, BYPASSRLS.
|
# Admin database — resolutionflow_admin role, BYPASSRLS.
|
||||||
# Used by /admin/* endpoints. Defaults to DATABASE_URL for local dev.
|
# Used by /admin/* endpoints. Defaults to DATABASE_URL for local dev.
|
||||||
|
|||||||
Reference in New Issue
Block a user