refactor(backend): ♻️ move router dependencies to mealie.core.dependencies module

This commit is contained in:
hay-kot
2021-08-28 15:36:46 -08:00
parent e1fb306a92
commit 985ad8017d
25 changed files with 81 additions and 31 deletions

View File

@@ -8,7 +8,7 @@ from sqlalchemy.orm.session import Session
from mealie.core.root_logger import get_logger
from mealie.db.database import db
from mealie.db.db_setup import SessionLocal, generate_session
from mealie.routes.deps import is_logged_in
from mealie.core.dependencies import is_logged_in
from mealie.schema.recipe import RecipeSummary
logger = get_logger()

View File

@@ -5,7 +5,7 @@ from pydantic import BaseModel
from sqlalchemy.orm.session import Session
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user, is_logged_in
from mealie.core.dependencies import get_current_user, is_logged_in
class CommonDeps(BaseModel):
@@ -17,7 +17,7 @@ class CommonDeps(BaseModel):
arbitrary_types_allowed = True
def _read_deps(
def read_deps(
background_tasks: BackgroundTasks,
session: Session = Depends(generate_session),
current_user=Depends(is_logged_in),
@@ -29,7 +29,7 @@ def _read_deps(
)
def _write_deps(
def write_deps(
background_tasks: BackgroundTasks,
session: Session = Depends(generate_session),
current_user=Depends(get_current_user),

View File

@@ -3,6 +3,8 @@ from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm.session import Session
from mealie.core.config import get_settings
from mealie.core.dependencies import ReadDeps
from mealie.core.dependencies.grouped import WriteDeps
from mealie.db.database import get_database
from mealie.db.db_setup import SessionLocal
from mealie.schema.recipe.recipe import CreateRecipe, Recipe
@@ -10,8 +12,6 @@ from mealie.schema.user.user import UserInDB
from mealie.services.events import create_recipe_event
from mealie.services.recipe.media import delete_assets
from .common_deps import CommonDeps, _read_deps, _write_deps
class RecipeService:
recipe: Recipe
@@ -27,7 +27,7 @@ class RecipeService:
self.settings = get_settings()
@classmethod
def read_existing(cls, slug: str, local_deps: CommonDeps = Depends(_read_deps)):
def read_existing(cls, slug: str, deps: ReadDeps = Depends()):
"""
Used for dependency injection for routes that require an existing recipe. If the recipe doesn't exist
or the user doens't not have the required permissions, the proper HTTP Status code will be raised.
@@ -44,12 +44,12 @@ class RecipeService:
Returns:
RecipeService: The Recipe Service class with a populated recipe attribute
"""
new_class = cls(local_deps.session, local_deps.user, local_deps.background_tasks)
new_class = cls(deps.session, deps.user, deps.background_tasks)
new_class.assert_existing(slug)
return new_class
@classmethod
def write_existing(cls, slug: str, local_deps: CommonDeps = Depends(_write_deps)):
def write_existing(cls, slug: str, deps: WriteDeps = Depends()):
"""
Used for dependency injection for routes that require an existing recipe. The only difference between
read_existing and write_existing is that the user is required to be logged in on write_existing method.
@@ -66,19 +66,19 @@ class RecipeService:
Returns:
RecipeService: The Recipe Service class with a populated recipe attribute
"""
new_class = cls(local_deps.session, local_deps.user, local_deps.background_tasks)
new_class = cls(deps.session, deps.user, deps.background_tasks)
new_class.assert_existing(slug)
return new_class
@classmethod
def base(cls, local_deps: CommonDeps = Depends(_write_deps)) -> Recipe:
def base(cls, deps: WriteDeps = Depends()) -> Recipe:
"""A Base instance to be used as a router dependency
Raises:
HTTPException: 400 Bad Request
"""
return cls(local_deps.session, local_deps.user, local_deps.background_tasks)
return cls(deps.session, deps.user, deps.background_tasks)
def pupulate_recipe(self, slug: str) -> Recipe:
"""Populates the recipe attribute with the recipe from the database.