From fbf675e86fa495caddf495758b36bea32b0fd0e2 Mon Sep 17 00:00:00 2001
From: David Trattnig <david@subsquare.at>
Date: Fri, 21 Jan 2022 12:59:55 +0100
Subject: [PATCH] SQLite config option as in engine. engine#89

---
 .../sample/sample-development.engine-api.ini  |  2 +-
 config/sample/sample-docker.engine-api.ini    |  2 +-
 .../sample/sample-production.engine-api.ini   |  2 +-
 src/base/config.py                            | 20 +++++++++++--------
 4 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/config/sample/sample-development.engine-api.ini b/config/sample/sample-development.engine-api.ini
index 29ac700..d06a5aa 100644
--- a/config/sample/sample-development.engine-api.ini
+++ b/config/sample/sample-development.engine-api.ini
@@ -5,7 +5,7 @@
 
 
 [database]
-# Use 'postgresql' or 'mysql'
+# Use 'postgresql', 'sqlite' or 'mysql'. In case of SQLite the "db_name" is the name of the file.
 db_type="postgresql"
 db_name="aura_engine_api"
 db_user="aura_engine_api"
diff --git a/config/sample/sample-docker.engine-api.ini b/config/sample/sample-docker.engine-api.ini
index e4839d5..4eff0a3 100644
--- a/config/sample/sample-docker.engine-api.ini
+++ b/config/sample/sample-docker.engine-api.ini
@@ -5,7 +5,7 @@
 
 
 [database]
-# Use 'postgresql' or 'mysql'
+# Use 'postgresql', 'sqlite' or 'mysql'. In case of SQLite the "db_name" is the name of the file.
 db_type="postgresql"
 db_name="aura_engine_api"
 db_user="aura_engine_api"
diff --git a/config/sample/sample-production.engine-api.ini b/config/sample/sample-production.engine-api.ini
index 09d1c39..9810dc4 100644
--- a/config/sample/sample-production.engine-api.ini
+++ b/config/sample/sample-production.engine-api.ini
@@ -5,7 +5,7 @@
 
 
 [database]
-# Use 'postgresql' or 'mysql'
+# Use 'postgresql', 'sqlite' or 'mysql'. In case of SQLite the "db_name" is the name of the file.
 db_type="postgresql"
 db_name="aura_engine_api"
 db_user="aura_engine_api"
diff --git a/src/base/config.py b/src/base/config.py
index e6a1d77..303078a 100644
--- a/src/base/config.py
+++ b/src/base/config.py
@@ -148,14 +148,18 @@ 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}.db"
         else:
             return f"Error: invalid database type '{db_type}'"
\ No newline at end of file
-- 
GitLab