diff --git a/mealie/app.py b/mealie/app.py index e242c380c..94cca6a14 100644 --- a/mealie/app.py +++ b/mealie/app.py @@ -3,6 +3,8 @@ from fastapi import FastAPI # import utils.startup as startup from app_config import APP_VERSION, PORT, SECRET, docs_url, redoc_url +from db.db_setup import sql_exists +from db.init_db import init_db from routes import ( backup_routes, debug_routes, @@ -18,7 +20,6 @@ from routes.recipe import ( tag_routes, ) from routes.users import users -from services.settings_services import default_settings_init from utils.logger import logger app = FastAPI( @@ -30,16 +31,14 @@ app = FastAPI( ) +def data_base_first_run(): + init_db() + + def start_scheduler(): import services.scheduler.scheduled_jobs -def init_settings(): - default_settings_init() - import services.theme_services - import services.users.users - - def api_routers(): # Authentication app.include_router(users.router) @@ -60,9 +59,11 @@ def api_routers(): app.include_router(debug_routes.router) +if not sql_exists: + data_base_first_run() + api_routers() start_scheduler() -init_settings() if __name__ == "__main__": logger.info("-----SYSTEM STARTUP-----") diff --git a/mealie/db/init_db.py b/mealie/db/init_db.py new file mode 100644 index 000000000..b3479296e --- /dev/null +++ b/mealie/db/init_db.py @@ -0,0 +1,64 @@ +from fastapi.logger import logger +from models.settings_models import SiteSettings, Webhooks +from sqlalchemy.orm import Session +from sqlalchemy.orm.session import Session +from utils.logger import logger + +from db.database import db +from db.db_setup import create_session + + +def init_db(db: Session = None) -> None: + if not db: + db = create_session() + + default_settings_init(db) + default_theme_init(db) + default_user_init(db) + + db.close() + + +def default_theme_init(session: Session): + default_theme = { + "name": "default", + "colors": { + "primary": "#E58325", + "accent": "#00457A", + "secondary": "#973542", + "success": "#5AB1BB", + "info": "#4990BA", + "warning": "#FF4081", + "error": "#EF5350", + }, + } + + try: + db.themes.create(session, default_theme) + logger.info("Generating default theme...") + except: + logger.info("Default Theme Exists.. skipping generation") + + +def default_settings_init(session: Session): + try: + webhooks = Webhooks() + default_entry = SiteSettings(name="main", webhooks=webhooks) + document = db.settings.create(session, default_entry.dict()) + logger.info(f"Created Site Settings: \n {document}") + except: + pass + + +def default_user_init(session: Session): + default_user = { + "full_name": "Change Me", + "email": "changeme@email.com", + "password": "MyPassword", + "family": "public", + "is_superuser": True, + } + + logger.info("Generating Default User") + db.users.create(session, default_user) + diff --git a/mealie/routes/setting_routes.py b/mealie/routes/setting_routes.py index a0f6b01cd..908117e0d 100644 --- a/mealie/routes/setting_routes.py +++ b/mealie/routes/setting_routes.py @@ -2,7 +2,6 @@ from db.database import db from db.db_setup import generate_session from fastapi import APIRouter, Depends from models.settings_models import SiteSettings -from services.settings_services import default_settings_init from sqlalchemy.orm.session import Session from utils.post_webhooks import post_webhooks from utils.snackbar import SnackResponse @@ -17,8 +16,7 @@ def get_main_settings(session: Session = Depends(generate_session)): try: data = db.settings.get(session, "main") except: - default_settings_init(session) - data = db.settings.get(session, "main") + return return data diff --git a/mealie/services/settings_services.py b/mealie/services/settings_services.py deleted file mode 100644 index 62e32bb3d..000000000 --- a/mealie/services/settings_services.py +++ /dev/null @@ -1,17 +0,0 @@ -from db.database import db -from db.db_setup import create_session -from models.settings_models import SiteSettings, Webhooks -from sqlalchemy.orm.session import Session -from utils.logger import logger - - -def default_settings_init(session: Session = None): - if session == None: - session = create_session() - try: - webhooks = Webhooks() - default_entry = SiteSettings(name="main", webhooks=webhooks) - document = db.settings.create(session, default_entry.dict()) - logger.info(f"Created Site Settings: \n {document}") - except: - pass diff --git a/mealie/services/theme_services.py b/mealie/services/theme_services.py deleted file mode 100644 index 12cd9c889..000000000 --- a/mealie/services/theme_services.py +++ /dev/null @@ -1,28 +0,0 @@ -from db.database import db -from db.db_setup import create_session, sql_exists -from utils.logger import logger - - -def default_theme_init(): - default_theme = { - "name": "default", - "colors": { - "primary": "#E58325", - "accent": "#00457A", - "secondary": "#973542", - "success": "#5AB1BB", - "info": "#4990BA", - "warning": "#FF4081", - "error": "#EF5350", - }, - } - session = create_session() - try: - db.themes.create(session, default_theme) - logger.info("Generating default theme...") - except: - logger.info("Default Theme Exists.. skipping generation") - - -if not sql_exists: - default_theme_init() diff --git a/mealie/services/users/users.py b/mealie/services/users/users.py deleted file mode 100644 index 62c28c23b..000000000 --- a/mealie/services/users/users.py +++ /dev/null @@ -1,25 +0,0 @@ -from db.database import db -from db.db_setup import create_session, sql_exists -from fastapi.logger import logger - - -def init_super_user(): - session = create_session() - - default_user = { - "full_name": "Change Me", - "email": "changeme@email.com", - "password": "MyPassword", - "family": "public", - "is_superuser": True, - } - - logger.info("Generating Default User") - - db.users.create(session, default_user) - - session.close() - - -if not sql_exists: - init_super_user() diff --git a/mealie/utils/startup.py b/mealie/utils/startup.py deleted file mode 100644 index b97811693..000000000 --- a/mealie/utils/startup.py +++ /dev/null @@ -1,13 +0,0 @@ -from pathlib import Path - -from services.settings_services import default_theme_init - -CWD = Path(__file__).parent - - -def post_start(): - default_theme_init() - - -if __name__ == "__main__": - pass