feat: updated the database_url_async
Browse files
backend/app/config/settings.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
from pydantic_settings import BaseSettings, SettingsConfigDict
|
| 2 |
from pydantic import Field
|
|
|
|
| 3 |
|
| 4 |
class Settings(BaseSettings):
|
| 5 |
PROJECT_NAME: str= "QuantIQ"
|
|
@@ -29,11 +30,22 @@ class Settings(BaseSettings):
|
|
| 29 |
"""
|
| 30 |
Ensures the database URL uses the asyncpg driver dialect.
|
| 31 |
Converts 'postgresql://' to 'postgresql+asyncpg://'
|
|
|
|
| 32 |
"""
|
| 33 |
-
url= self.DATABASE_URL
|
| 34 |
if url.startswith("postgresql://"):
|
| 35 |
-
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
model_config= SettingsConfigDict(
|
| 39 |
env_file=".env",
|
|
|
|
| 1 |
from pydantic_settings import BaseSettings, SettingsConfigDict
|
| 2 |
from pydantic import Field
|
| 3 |
+
from urllib.parse import urlparse, parse_qsl, urlencode, urlunparse
|
| 4 |
|
| 5 |
class Settings(BaseSettings):
|
| 6 |
PROJECT_NAME: str= "QuantIQ"
|
|
|
|
| 30 |
"""
|
| 31 |
Ensures the database URL uses the asyncpg driver dialect.
|
| 32 |
Converts 'postgresql://' to 'postgresql+asyncpg://'
|
| 33 |
+
and cleans up query parameters for asyncpg.
|
| 34 |
"""
|
| 35 |
+
url = self.DATABASE_URL
|
| 36 |
if url.startswith("postgresql://"):
|
| 37 |
+
url = url.replace("postgresql://", "postgresql+asyncpg://", 1)
|
| 38 |
+
|
| 39 |
+
parsed_url = urlparse(url)
|
| 40 |
+
query_params = dict(parse_qsl(parsed_url.query))
|
| 41 |
+
|
| 42 |
+
if "sslmode" in query_params:
|
| 43 |
+
query_params["ssl"] = query_params.pop("sslmode")
|
| 44 |
+
|
| 45 |
+
query_params.pop("channel_binding", None)
|
| 46 |
+
reconstructed_query = urlencode(query_params)
|
| 47 |
+
parsed_url = parsed_url._replace(query=reconstructed_query)
|
| 48 |
+
return urlunparse(parsed_url)
|
| 49 |
|
| 50 |
model_config= SettingsConfigDict(
|
| 51 |
env_file=".env",
|