diff --git a/mealie/db/models/recipe/category.py b/mealie/db/models/recipe/category.py index d898dbbe8d2e..b5d8cb9d9fd1 100644 --- a/mealie/db/models/recipe/category.py +++ b/mealie/db/models/recipe/category.py @@ -1,6 +1,7 @@ import sqlalchemy as sa import sqlalchemy.orm as orm from mealie.core import root_logger +from mealie.db.db_setup import SessionLocal from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase from slugify import slugify from sqlalchemy.orm import validates @@ -56,12 +57,13 @@ class Category(SqlAlchemyBase, BaseMixins): self.slug = slugify(name) @staticmethod - def create_if_not_exist(session, name: str = None): + def create_if_not_exist(name: str = None): test_slug = slugify(name) - result = session.query(Category).filter(Category.slug == test_slug).one_or_none() - if result: - logger.debug("Category exists, associating recipe") - return result - else: - logger.debug("Category doesn't exists, creating tag") - return Category(name=name) + with SessionLocal() as session: + result = session.query(Category).filter(Category.slug == test_slug).one_or_none() + if result: + logger.debug("Category exists, associating recipe") + return result + else: + logger.debug("Category doesn't exists, creating tag") + return Category(name=name) diff --git a/mealie/db/models/recipe/recipe.py b/mealie/db/models/recipe/recipe.py index a3aaaad4d50b..36677b8fe337 100644 --- a/mealie/db/models/recipe/recipe.py +++ b/mealie/db/models/recipe/recipe.py @@ -126,11 +126,11 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): self.perform_time = perform_time self.cook_time = cook_time - self.recipe_category = [x for x in [Category.get_ref(cat) for cat in recipe_category] if x] + self.recipe_category = [x for x in [Category.create_if_not_exist(cat) for cat in recipe_category] if x] # Mealie Specific self.settings = RecipeSettings(**settings) if settings else RecipeSettings() - self.tags = [x for x in [Tag.get_ref(tag) for tag in tags] if x] + self.tags = [Tag.create_if_not_exist(tag) for tag in tags] self.slug = slug self.notes = [Note(**note) for note in notes] self.rating = rating diff --git a/mealie/db/models/recipe/tag.py b/mealie/db/models/recipe/tag.py index 45cce26cc9e6..599cbccaa4ce 100644 --- a/mealie/db/models/recipe/tag.py +++ b/mealie/db/models/recipe/tag.py @@ -1,6 +1,7 @@ import sqlalchemy as sa import sqlalchemy.orm as orm from mealie.core import root_logger +from mealie.db.db_setup import SessionLocal from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase from slugify import slugify from sqlalchemy.orm import validates @@ -35,13 +36,14 @@ class Tag(SqlAlchemyBase, BaseMixins): self.slug = slugify(self.name) @staticmethod - def create_if_not_exist(session, name: str = None): + def create_if_not_exist(name: str = None): test_slug = slugify(name) - result = session.query(Tag).filter(Tag.slug == test_slug).one_or_none() + with SessionLocal() as session: + result = session.query(Tag).filter(Tag.slug == test_slug).one_or_none() - if result: - logger.debug("Tag exists, associating recipe") - return result - else: - logger.debug("Tag doesn't exists, creating tag") - return Tag(name=name) + if result: + logger.debug("Tag exists, associating recipe") + return result + else: + logger.debug("Tag doesn't exists, creating tag") + return Tag(name=name) diff --git a/mealie/routes/backup_routes.py b/mealie/routes/backup_routes.py index a2d58edb8518..cd642848fc03 100644 --- a/mealie/routes/backup_routes.py +++ b/mealie/routes/backup_routes.py @@ -1,6 +1,7 @@ import operator import shutil from pathlib import Path +from pprint import pprint from fastapi import BackgroundTasks, Depends, File, HTTPException, UploadFile, status from mealie.core.config import app_dirs @@ -98,6 +99,9 @@ def import_database( force_import=import_data.force, rebase=import_data.rebase, ) + + pprint(db_import) + background_tasks.add_task(create_backup_event, "Database Restore", f"Restore File: {file_name}", session) return db_import