Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/groups/controller_seeder.py: 68%
28 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
1from functools import cached_property 1a
3from fastapi import APIRouter, HTTPException 1a
5from mealie.routes._base.base_controllers import BaseUserController 1a
6from mealie.routes._base.controller import controller 1a
7from mealie.schema.group.group_seeder import SeederConfig 1a
8from mealie.schema.response.responses import ErrorResponse, SuccessResponse 1a
9from mealie.services.seeder.seeder_service import SeederService 1a
11router = APIRouter(prefix="/groups/seeders", tags=["Groups: Seeders"]) 1a
14@controller(router) 1a
15class DataSeederController(BaseUserController): 1a
16 @cached_property 1a
17 def service(self) -> SeederService: 1a
18 return SeederService(self.repos)
20 def _wrap(self, func): 1a
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) 1a
29 def seed_foods(self, data: SeederConfig) -> dict: 1a
30 return self._wrap(lambda: self.service.seed_foods(data.locale))
32 @router.post("/labels", response_model=SuccessResponse) 1a
33 def seed_labels(self, data: SeederConfig) -> dict: 1a
34 return self._wrap(lambda: self.service.seed_labels(data.locale))
36 @router.post("/units", response_model=SuccessResponse) 1a
37 def seed_units(self, data: SeederConfig) -> dict: 1a
38 return self._wrap(lambda: self.service.seed_units(data.locale))