From 1beb6f802df6dc5a8d2d1c3311b0c596055b9221 Mon Sep 17 00:00:00 2001
From: Lars Kruse <devel@sumpfralle.de>
Date: Tue, 23 Nov 2021 00:29:03 +0100
Subject: [PATCH] feat(database): add support for sqlite database

An sqlite database is much easier to setup for simple local deployments
and specifically for test automation.
---
 src/base/config.py | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/base/config.py b/src/base/config.py
index 52056e65..cace94ba 100644
--- a/src/base/config.py
+++ b/src/base/config.py
@@ -108,15 +108,19 @@ class AuraConfig:
         Retrieves the database connection string.
         """
         db_name = str(self.get("db_name"))
-        db_user = str(self.get("db_user"))
-        db_pass = str(self.get("db_pass"))
-        db_host = str(self.get("db_host"))
         db_type = str(self.get("db_type"))
-        db_charset = self.get("db_charset", "utf8")
-        if db_type == "mysql":
-            return "mysql://" + db_user + ":" + db_pass + "@" + db_host + "/" + db_name + "?charset=" + db_charset
-        elif db_type == "postgresql":
-            return f"postgresql+psycopg2://{db_user}:{db_pass}@{db_host}/{db_name}?client_encoding={db_charset}"
+        if db_type in {"mysql", "postgresql"}:
+            db_user = str(self.get("db_user"))
+            db_pass = str(self.get("db_pass"))
+            db_host = str(self.get("db_host"))
+            db_charset = self.get("db_charset", "utf8")
+            if db_type == "mysql":
+                return f"mysql://{db_user}:{db_pass}@{db_host}/{db_name}?charset={db_charset}"
+            else:
+                return f"postgresql+psycopg2://{db_user}:{db_pass}@{db_host}/{db_name}?client_encoding={db_charset}"
+        elif db_type == "sqlite":
+            # "db_name" is expected to be either a relative or an absolute path to the sqlite file
+            return f"sqlite:///{db_name}"
         else:
             return f"Error: invalid database type '{db_type}'"
 
-- 
GitLab