PYAE1994 commited on
Commit
90c690e
·
1 Parent(s): 9b18003

🔧 Fix DB connection: parse URL components separately for asyncpg + Supabase SSL

Browse files
Files changed (1) hide show
  1. persistence.py +22 -1
persistence.py CHANGED
@@ -33,7 +33,28 @@ async def init_db() -> bool:
33
  return False
34
  try:
35
  import asyncpg
36
- _db_pool = await asyncpg.create_pool(db_url, min_size=1, max_size=8)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  await _create_schema()
38
  logger.info("✅ Supabase/PostgreSQL connected")
39
  return True
 
33
  return False
34
  try:
35
  import asyncpg
36
+ from urllib.parse import urlparse, urlunparse, unquote
37
+
38
+ # asyncpg requires DSN with real special chars decoded
39
+ # but password @ must stay encoded — use dsn kwarg approach
40
+ parsed = urlparse(db_url)
41
+ # Build explicit kwargs to avoid double-@ parsing issues
42
+ user = unquote(parsed.username or "")
43
+ password = unquote(parsed.password or "")
44
+ host = parsed.hostname or ""
45
+ port = parsed.port or 5432
46
+ database = (parsed.path or "/postgres").lstrip("/")
47
+
48
+ _db_pool = await asyncpg.create_pool(
49
+ user=user,
50
+ password=password,
51
+ host=host,
52
+ port=port,
53
+ database=database,
54
+ min_size=1,
55
+ max_size=8,
56
+ ssl="require",
57
+ )
58
  await _create_schema()
59
  logger.info("✅ Supabase/PostgreSQL connected")
60
  return True