mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-12 21:35:18 -05:00
* update naming * refactor tests to use shared structure * shorten names * add tools test case * refactor to support multi-tenant * set group_id on creation * initial refactor for multitenant tags/cats * spelling * additional test case for same valued resources * fix recipe update tests * apply indexes to foreign keys * fix performance regressions * handle unknown exception * utility decorator for function debugging * migrate recipe_id to UUID * GUID for recipes * remove unused import * move image functions into package * move utilities to packages dir * update import * linter * image image and asset routes * update assets and images to use UUIDs * fix migration base * image asset test coverage * use ids for categories and tag crud functions * refactor recipe organizer test suite to reduce duplication * add uuid serlization utility * organizer base router * slug routes testing and fixes * fix postgres error * adopt UUIDs * move tags, categories, and tools under "organizers" umbrella * update composite label * generate ts types * fix import error * update frontend types * fix type errors * fix postgres errors * fix #978 * add null check for title validation * add note in docs on multi-tenancy
43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
from functools import cached_property
|
|
|
|
from pydantic import UUID4
|
|
|
|
from mealie.routes._base import BaseUserController, controller
|
|
from mealie.routes._base.mixins import CrudMixins
|
|
from mealie.routes._base.routers import UserAPIRouter
|
|
from mealie.schema.recipe import RecipeShareTokenSummary
|
|
from mealie.schema.recipe.recipe_share_token import RecipeShareToken, RecipeShareTokenCreate, RecipeShareTokenSave
|
|
|
|
router = UserAPIRouter(prefix="/shared/recipes", tags=["Shared: Recipes"])
|
|
|
|
|
|
@controller(router)
|
|
class RecipeSharedController(BaseUserController):
|
|
@cached_property
|
|
def repo(self):
|
|
return self.repos.recipe_share_tokens.by_group(self.group_id)
|
|
|
|
@cached_property
|
|
def mixins(self):
|
|
return CrudMixins[RecipeShareTokenSave, RecipeShareToken, RecipeShareTokenCreate](self.repo, self.deps.logger)
|
|
|
|
@router.get("", response_model=list[RecipeShareTokenSummary])
|
|
def get_all(self, recipe_id: UUID4 = None):
|
|
if recipe_id:
|
|
return self.repo.multi_query({"recipe_id": recipe_id}, override_schema=RecipeShareTokenSummary)
|
|
else:
|
|
return self.repo.get_all(override_schema=RecipeShareTokenSummary)
|
|
|
|
@router.post("", response_model=RecipeShareToken, status_code=201)
|
|
def create_one(self, data: RecipeShareTokenCreate) -> RecipeShareToken:
|
|
save_data = RecipeShareTokenSave(**data.dict(), group_id=self.group_id)
|
|
return self.mixins.create_one(save_data)
|
|
|
|
@router.get("/{item_id}", response_model=RecipeShareToken)
|
|
def get_one(self, item_id: UUID4):
|
|
return self.mixins.get_one(item_id)
|
|
|
|
@router.delete("/{item_id}")
|
|
def delete_one(self, item_id: UUID4 = None) -> None:
|
|
return self.mixins.delete_one(item_id)
|