From 0170aa3f03f1d0a4d1e5d086b57a8acc12c433df Mon Sep 17 00:00:00 2001 From: Hayden Date: Sun, 17 Jan 2021 09:46:34 -0900 Subject: [PATCH] bug: startup failure with no database --- mealie/app.py | 7 ++----- mealie/db/db_setup.py | 3 +++ mealie/services/settings_services.py | 14 +++++++++++++- mealie/utils/startup.py | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/mealie/app.py b/mealie/app.py index e7d48e1f7..9188e01aa 100644 --- a/mealie/app.py +++ b/mealie/app.py @@ -15,11 +15,7 @@ from routes import ( ) from utils.api_docs import generate_api_docs from utils.logger import logger - -# startup.pre_start() - -# if USE_SQL: -# sql_global_init() +from utils.startup import post_start app = FastAPI( title="Mealie", @@ -57,6 +53,7 @@ def invalid_api(): app.include_router(static_routes.router) +# post_start() # Generate API Documentation if not PRODUCTION: diff --git a/mealie/db/db_setup.py b/mealie/db/db_setup.py index 15fb98d35..b41197948 100644 --- a/mealie/db/db_setup.py +++ b/mealie/db/db_setup.py @@ -2,8 +2,11 @@ from app_config import SQLITE_FILE, USE_MONGO, USE_SQL from db.sql.db_session import globa_init as sql_global_init +sql_exists = SQLITE_FILE.is_file() + if USE_SQL: sql_global_init(SQLITE_FILE) + pass elif USE_MONGO: diff --git a/mealie/services/settings_services.py b/mealie/services/settings_services.py index 594ea4c6b..ae6cdaa36 100644 --- a/mealie/services/settings_services.py +++ b/mealie/services/settings_services.py @@ -1,6 +1,7 @@ from typing import List, Optional from db.database import db +from db.db_setup import sql_exists from pydantic import BaseModel from utils.logger import logger @@ -120,7 +121,7 @@ def default_theme_init(): try: SiteTheme.get_by_name("default") - return "default theme exists" + logger.info("Default theme exists... skipping generation") except: logger.info("Generating Default Theme") colors = Colors(**default_colors) @@ -128,4 +129,15 @@ def default_theme_init(): default_theme.save_to_db() +def default_settings_init(): + try: + document = db.settings.get("main") + except: + webhooks = Webhooks() + default_entry = SiteSettings(name="main", webhooks=webhooks) + document = db.settings.save_new(default_entry.dict(), webhooks.dict()) + +if not sql_exists: + default_settings_init() + default_theme_init diff --git a/mealie/utils/startup.py b/mealie/utils/startup.py index b6678179d..04be244e3 100644 --- a/mealie/utils/startup.py +++ b/mealie/utils/startup.py @@ -6,7 +6,7 @@ from services.settings_services import default_theme_init CWD = Path(__file__).parent -def pre_start(): +def post_start(): default_theme_init()