22import json
33from datetime import date
44from enum import Enum
5-
6- import dsnparse
5+ from urllib .parse import urlparse
76
87from diffa .utils import Logger
98
@@ -54,12 +53,12 @@ def _parse_db_info(self):
5453 # Users can ref an env var in the DB_URI in the command
5554 if self .db_uri .startswith ("$" ):
5655 self .db_uri = os .getenv (self .db_uri [1 :], "" )
57- dns = dsnparse . parse (self .db_uri )
56+ dns = urlparse (self .db_uri )
5857 parsed_db_info = self ._extract_db_details (dns )
5958 self ._validate_parsed_db_info (parsed_db_info )
6059 return parsed_db_info
61- except TypeError :
62- logger .error ("Invalid db info" , exc_info = True )
60+ except Exception as e :
61+ logger .error (f"Error parsing DB info: { e } " )
6362 raise
6463
6564 def _validate_parsed_db_info (self , parsed_db_info : dict ):
@@ -70,17 +69,17 @@ def _validate_parsed_db_info(self, parsed_db_info: dict):
7069 )
7170
7271 def _extract_db_details (self , dns ):
73- db_database = self .db_name or dns .database
72+ db_database = self .db_name or dns .path . lstrip ( "/" )
7473 return {
75- "host" : dns .host ,
74+ "host" : dns .hostname ,
7675 "scheme" : dns .scheme ,
7776 "port" : dns .port ,
7877 "database" : db_database ,
7978 "user" : dns .username ,
8079 "password" : dns .password ,
8180 "schema" : self .db_schema ,
8281 "table" : self .db_table ,
83- "db_uri" : f"{ dns .scheme } ://{ dns .username } :{ dns .password } @{ dns .host } :{ dns .port } /{ db_database } " ,
82+ "db_uri" : f"{ dns .scheme } ://{ dns .username } :{ dns .password } @{ dns .hostname } :{ dns .port } /{ db_database } " ,
8483 }
8584
8685 def get_db_config (self ):
0 commit comments