mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-11 04:45:22 -05:00
* fix #1144 * fix type checks * refactor test routes package * fix #1208 * unify test routes into module
This commit is contained in:
@@ -149,8 +149,8 @@ class RepositoryGeneric(Generic[T, D]):
|
||||
if match_key is None:
|
||||
match_key = self.primary_key
|
||||
|
||||
filter = self._filter_builder(**{match_key: match_value})
|
||||
return self.session.query(self.sql_model).filter_by(**filter).one()
|
||||
fltr = self._filter_builder(**{match_key: match_value})
|
||||
return self.session.query(self.sql_model).filter_by(**fltr).one()
|
||||
|
||||
def get_one(self, value: str | int | UUID4, key: str = None, any_case=False, override_schema=None) -> T | None:
|
||||
key = key or self.primary_key
|
||||
@@ -210,7 +210,7 @@ class RepositoryGeneric(Generic[T, D]):
|
||||
|
||||
return [eff_schema.from_orm(x) for x in result]
|
||||
|
||||
def create(self, document: T | BaseModel) -> T:
|
||||
def create(self, document: T | BaseModel | dict) -> T:
|
||||
"""Creates a new database entry for the given SQL Alchemy Model.
|
||||
|
||||
Args:
|
||||
@@ -266,8 +266,10 @@ class RepositoryGeneric(Generic[T, D]):
|
||||
|
||||
return self.update(match_value, entry_as_dict)
|
||||
|
||||
def delete(self, primary_key_value) -> D:
|
||||
result = self.session.query(self.sql_model).filter_by(**{self.primary_key: primary_key_value}).one()
|
||||
def delete(self, value, match_key: str | None = None) -> T:
|
||||
match_key = match_key or self.primary_key
|
||||
|
||||
result = self.session.query(self.sql_model).filter_by(**{match_key: value}).one()
|
||||
results_as_model = self.schema.from_orm(result)
|
||||
|
||||
try:
|
||||
@@ -313,7 +315,7 @@ class RepositoryGeneric(Generic[T, D]):
|
||||
for x in self.session.query(self.sql_model).filter(attribute_name == attr_match).all() # noqa: 711
|
||||
]
|
||||
|
||||
def create_many(self, documents: list[T]) -> list[T]:
|
||||
def create_many(self, documents: list[T | dict]) -> list[T]:
|
||||
new_documents = []
|
||||
for document in documents:
|
||||
document = document if isinstance(document, dict) else document.dict()
|
||||
|
||||
@@ -2,6 +2,8 @@ import random
|
||||
import shutil
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import UUID4
|
||||
|
||||
from mealie.assets import users as users_assets
|
||||
from mealie.schema.user.user import PrivateUser, User
|
||||
|
||||
@@ -30,11 +32,11 @@ class RepositoryUsers(RepositoryGeneric[PrivateUser, User]):
|
||||
|
||||
return new_user
|
||||
|
||||
def delete(self, id: str) -> User:
|
||||
entry = super().delete(id)
|
||||
def delete(self, value: str | UUID4, match_key: str | None = None) -> User:
|
||||
entry = super().delete(value, match_key)
|
||||
# Delete the user's directory
|
||||
shutil.rmtree(PrivateUser.get_directory(id))
|
||||
return entry
|
||||
shutil.rmtree(PrivateUser.get_directory(value))
|
||||
return entry # type: ignore
|
||||
|
||||
def get_by_username(self, username: str, limit=1) -> Optional[User]:
|
||||
dbuser = self.session.query(User).filter(User.username == username).one_or_none()
|
||||
|
||||
@@ -128,7 +128,7 @@ class PrivateUser(UserOut):
|
||||
orm_mode = True
|
||||
|
||||
@staticmethod
|
||||
def get_directory(user_id: UUID4) -> Path:
|
||||
def get_directory(user_id: UUID4 | str) -> Path:
|
||||
user_dir = get_app_dirs().USER_DIR / str(user_id)
|
||||
user_dir.mkdir(parents=True, exist_ok=True)
|
||||
return user_dir
|
||||
|
||||
@@ -178,7 +178,7 @@ class RecipeService(BaseService):
|
||||
def delete_one(self, slug) -> Recipe:
|
||||
recipe = self._get_recipe(slug)
|
||||
self.can_update(recipe)
|
||||
data = self.repos.recipes.delete(slug)
|
||||
data = self.repos.recipes.delete(recipe.id, "id")
|
||||
self.delete_assets(data)
|
||||
return data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user