mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-25 08:09:41 +02:00
feature: proper multi-tenant-support (#969)(WIP)
* 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
This commit is contained in:
parent
9a82a172cb
commit
c617251f4c
157 changed files with 1866 additions and 1578 deletions
53
tests/multitenant_tests/case_tools.py
Normal file
53
tests/multitenant_tests/case_tools.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
from typing import Tuple
|
||||
|
||||
from requests import Response
|
||||
|
||||
from mealie.schema.recipe.recipe import RecipeTool
|
||||
from mealie.schema.recipe.recipe_tool import RecipeToolSave
|
||||
from tests import utils
|
||||
from tests.multitenant_tests.case_abc import ABCMultiTenantTestCase
|
||||
from tests.utils import routes
|
||||
|
||||
|
||||
class ToolsTestCase(ABCMultiTenantTestCase):
|
||||
items: list[RecipeTool]
|
||||
|
||||
def seed_action(self, group_id: str) -> set[int]:
|
||||
tool_ids: set[int] = set()
|
||||
for _ in range(10):
|
||||
tool = self.database.tools.create(
|
||||
RecipeToolSave(
|
||||
group_id=group_id,
|
||||
name=utils.random_string(10),
|
||||
)
|
||||
)
|
||||
|
||||
tool_ids.add(str(tool.id))
|
||||
self.items.append(tool)
|
||||
|
||||
return tool_ids
|
||||
|
||||
def seed_multi(self, group1_id: str, group2_id: str) -> Tuple[set[int], set[int]]:
|
||||
g1_item_ids = set()
|
||||
g2_item_ids = set()
|
||||
|
||||
for group_id, item_ids in [(group1_id, g1_item_ids), (group2_id, g2_item_ids)]:
|
||||
for _ in range(10):
|
||||
name = utils.random_string(10)
|
||||
tool = self.database.tools.create(
|
||||
RecipeToolSave(
|
||||
group_id=group_id,
|
||||
name=name,
|
||||
)
|
||||
)
|
||||
item_ids.add(str(tool.id))
|
||||
self.items.append(tool)
|
||||
|
||||
return g1_item_ids, g2_item_ids
|
||||
|
||||
def get_all(self, token: str) -> Response:
|
||||
return self.client.get(routes.RoutesTools.base, headers=token)
|
||||
|
||||
def cleanup(self) -> None:
|
||||
for item in self.items:
|
||||
self.database.tools.delete(item.id)
|
Loading…
Add table
Add a link
Reference in a new issue