From a87bc770c7cf873db8a5a79811da2f496be18633 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 16 Jan 2021 12:56:28 +0100
Subject: [PATCH] use database url from settings

---
 src/Dependencies.py               | 5 +++--
 src/Settings.py                   | 4 ++++
 src/logic/databaseNew/Database.py | 7 +++++--
 src/main.py                       | 8 ++------
 4 files changed, 14 insertions(+), 10 deletions(-)
 create mode 100644 src/Settings.py

diff --git a/src/Dependencies.py b/src/Dependencies.py
index da430ca..0fe8160 100644
--- a/src/Dependencies.py
+++ b/src/Dependencies.py
@@ -4,6 +4,7 @@ from fastapi import Security, HTTPException
 from fastapi.security import APIKeyHeader
 from starlette.status import HTTP_403_FORBIDDEN
 
+from Settings import SETTINGS
 from logic.databaseNew.Database import SessionLocal
 
 
@@ -19,6 +20,6 @@ API_KEY_HEADER = APIKeyHeader(name='apiKey')
 
 
 async def check_api_key(apiKey: str = Security(API_KEY_HEADER)):
-    from main import API_KEY
-    if not secrets.compare_digest(API_KEY, apiKey):
+    expectedApiKey = SETTINGS['api']['key']
+    if not secrets.compare_digest(expectedApiKey, apiKey):
         raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail='apiKey invalid')
diff --git a/src/Settings.py b/src/Settings.py
new file mode 100644
index 0000000..5b76c1d
--- /dev/null
+++ b/src/Settings.py
@@ -0,0 +1,4 @@
+import json
+
+with open('../settings.json', 'r', encoding='UTF-8') as f:
+    SETTINGS = json.load(f)
diff --git a/src/logic/databaseNew/Database.py b/src/logic/databaseNew/Database.py
index 72be7a8..bec3c8d 100644
--- a/src/logic/databaseNew/Database.py
+++ b/src/logic/databaseNew/Database.py
@@ -2,10 +2,13 @@ from sqlalchemy import create_engine
 from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import sessionmaker
 
-SQLALCHEMY_DATABASE_URL = 'sqlite:///../../storageLeaf_new.db'
+from Settings import SETTINGS
+
+databasePath = SETTINGS['database']['databasePath']
+databaseUrl = f'sqlite:///{databasePath}'
 
 engine = create_engine(
-    SQLALCHEMY_DATABASE_URL, connect_args={'check_same_thread': False}
+    databaseUrl, connect_args={'check_same_thread': False}
 )
 
 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
diff --git a/src/main.py b/src/main.py
index 612933a..726f3b5 100644
--- a/src/main.py
+++ b/src/main.py
@@ -4,6 +4,7 @@ import uvicorn
 from fastapi import FastAPI
 from starlette.responses import RedirectResponse, JSONResponse
 
+from Settings import SETTINGS
 from logic import Constants
 from logic.databaseNew import Models
 from logic.databaseNew.Database import engine
@@ -15,11 +16,6 @@ Models.Base.metadata.create_all(bind=engine)
 with open('version.json', 'r', encoding='UTF-8') as f:
     versionInfo = json.load(f)['version']
 
-with open('../settings.json', 'r', encoding='UTF-8') as f:
-    settings = json.load(f)
-
-API_KEY = settings['api']['key']
-
 app = FastAPI(title=Constants.APP_NAME,
               version=versionInfo['name'],
               description='The StorageLeaf API')
@@ -36,4 +32,4 @@ async def version():
     return JSONResponse(content=versionInfo)
 
 if __name__ == '__main__':
-    uvicorn.run(app, host=settings['server']['listen'], port=settings['server']['port'])
+    uvicorn.run(app, host=SETTINGS['server']['listen'], port=SETTINGS['server']['port'])
-- 
GitLab