Karan6124 commited on
Commit
e0883b3
·
1 Parent(s): fd9fd80

feat: updated the database_url_async

Browse files
Files changed (1) hide show
  1. backend/app/config/settings.py +15 -3
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
- return url.replace("postgresql://", "postgresql+asyncpg://", 1)
36
- return url
 
 
 
 
 
 
 
 
 
 
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",