fix restore from backup

This commit is contained in:
hay-kot 2021-08-22 16:15:08 -08:00
parent 234db39cc7
commit 04ebc07333
4 changed files with 26 additions and 18 deletions

View File

@ -1,6 +1,7 @@
import sqlalchemy as sa import sqlalchemy as sa
import sqlalchemy.orm as orm import sqlalchemy.orm as orm
from mealie.core import root_logger from mealie.core import root_logger
from mealie.db.db_setup import SessionLocal
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from slugify import slugify from slugify import slugify
from sqlalchemy.orm import validates from sqlalchemy.orm import validates
@ -56,12 +57,13 @@ class Category(SqlAlchemyBase, BaseMixins):
self.slug = slugify(name) self.slug = slugify(name)
@staticmethod @staticmethod
def create_if_not_exist(session, name: str = None): def create_if_not_exist(name: str = None):
test_slug = slugify(name) test_slug = slugify(name)
result = session.query(Category).filter(Category.slug == test_slug).one_or_none() with SessionLocal() as session:
if result: result = session.query(Category).filter(Category.slug == test_slug).one_or_none()
logger.debug("Category exists, associating recipe") if result:
return result logger.debug("Category exists, associating recipe")
else: return result
logger.debug("Category doesn't exists, creating tag") else:
return Category(name=name) logger.debug("Category doesn't exists, creating tag")
return Category(name=name)

View File

@ -126,11 +126,11 @@ class RecipeModel(SqlAlchemyBase, BaseMixins):
self.perform_time = perform_time self.perform_time = perform_time
self.cook_time = cook_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 # Mealie Specific
self.settings = RecipeSettings(**settings) if settings else RecipeSettings() 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.slug = slug
self.notes = [Note(**note) for note in notes] self.notes = [Note(**note) for note in notes]
self.rating = rating self.rating = rating

View File

@ -1,6 +1,7 @@
import sqlalchemy as sa import sqlalchemy as sa
import sqlalchemy.orm as orm import sqlalchemy.orm as orm
from mealie.core import root_logger from mealie.core import root_logger
from mealie.db.db_setup import SessionLocal
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from slugify import slugify from slugify import slugify
from sqlalchemy.orm import validates from sqlalchemy.orm import validates
@ -35,13 +36,14 @@ class Tag(SqlAlchemyBase, BaseMixins):
self.slug = slugify(self.name) self.slug = slugify(self.name)
@staticmethod @staticmethod
def create_if_not_exist(session, name: str = None): def create_if_not_exist(name: str = None):
test_slug = slugify(name) 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: if result:
logger.debug("Tag exists, associating recipe") logger.debug("Tag exists, associating recipe")
return result return result
else: else:
logger.debug("Tag doesn't exists, creating tag") logger.debug("Tag doesn't exists, creating tag")
return Tag(name=name) return Tag(name=name)

View File

@ -1,6 +1,7 @@
import operator import operator
import shutil import shutil
from pathlib import Path from pathlib import Path
from pprint import pprint
from fastapi import BackgroundTasks, Depends, File, HTTPException, UploadFile, status from fastapi import BackgroundTasks, Depends, File, HTTPException, UploadFile, status
from mealie.core.config import app_dirs from mealie.core.config import app_dirs
@ -98,6 +99,9 @@ def import_database(
force_import=import_data.force, force_import=import_data.force,
rebase=import_data.rebase, rebase=import_data.rebase,
) )
pprint(db_import)
background_tasks.add_task(create_backup_event, "Database Restore", f"Restore File: {file_name}", session) background_tasks.add_task(create_backup_event, "Database Restore", f"Restore File: {file_name}", session)
return db_import return db_import