]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/config.py
add function to get a DSN for psycopg
[nominatim.git] / nominatim / config.py
index 0a595374eeb1414f61142a85b313a6ab86506f21..458c828f58fce8adeda02fd550823641366ceb2c 100644 (file)
@@ -21,18 +21,31 @@ class Configuration:
 
     def __init__(self, project_dir, config_dir):
         self._config = dotenv_values(str((config_dir / 'env.defaults').resolve()))
-        self._config.update(dotenv_values(str((project_dir / '.env').resolve())))
+        if project_dir is not None:
+            self._config.update(dotenv_values(str((project_dir / '.env').resolve())))
 
     def __getattr__(self, name):
         name = 'NOMINATIM_' + name
 
         return os.environ.get(name) or self._config[name]
 
+    def get_libpq_dsn(self):
+        """ Get configured database DSN converted into the key/value format
+            understood by libpq and psycopg.
+        """
+        dsn = self.DATABASE_DSN
+
+        if dsn.startswith('pgsql:'):
+            # Old PHP DSN format. Convert before returning.
+            return dsn[6:].replace(';', ' ')
+
+        return dsn
+
     def get_os_env(self):
         """ Return a copy of the OS environment with the Nominatim configuration
             merged in.
         """
-        env = dict(os.environ)
-        env.update(self._config)
+        env = dict(self._config)
+        env.update(os.environ)
 
         return env