Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/groups/controller_seeder.py: 68%
28 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from functools import cached_property
3from fastapi import APIRouter, HTTPException
5from mealie.routes._base.base_controllers import BaseUserController
6from mealie.routes._base.controller import controller
7from mealie.schema.group.group_seeder import SeederConfig
8from mealie.schema.response.responses import ErrorResponse, SuccessResponse
9from mealie.services.seeder.seeder_service import SeederService
11router = APIRouter(prefix="/groups/seeders", tags=["Groups: Seeders"])
14@controller(router)
15class DataSeederController(BaseUserController):
16 @cached_property
17 def service(self) -> SeederService:
18 return SeederService(self.repos)
20 def _wrap(self, func):
21 try:
22 func()
23 except Exception as e:
24 raise HTTPException(status_code=500, detail=ErrorResponse.respond("Seeding Failed")) from e
26 return SuccessResponse.respond("Seeding Successful")
28 @router.post("/foods", response_model=SuccessResponse)
29 def seed_foods(self, data: SeederConfig) -> dict:
30 return self._wrap(lambda: self.service.seed_foods(data.locale))
32 @router.post("/labels", response_model=SuccessResponse)
33 def seed_labels(self, data: SeederConfig) -> dict:
34 return self._wrap(lambda: self.service.seed_labels(data.locale))
36 @router.post("/units", response_model=SuccessResponse)
37 def seed_units(self, data: SeederConfig) -> dict:
38 return self._wrap(lambda: self.service.seed_units(data.locale))