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.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,8 +57,9 @@ 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)
with SessionLocal() as session:
result = session.query(Category).filter(Category.slug == test_slug).one_or_none()
if result:
logger.debug("Category exists, associating recipe")

View File

@ -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

View File

@ -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,8 +36,9 @@ 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)
with SessionLocal() as session:
result = session.query(Tag).filter(Tag.slug == test_slug).one_or_none()
if result:

View File

@ -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