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:32 +0000

1from functools import cached_property 1a

2 

3from fastapi import APIRouter, HTTPException 1a

4 

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

10 

11router = APIRouter(prefix="/groups/seeders", tags=["Groups: Seeders"]) 1a

12 

13 

14@controller(router) 1a

15class DataSeederController(BaseUserController): 1a

16 @cached_property 1a

17 def service(self) -> SeederService: 1a

18 return SeederService(self.repos) 

19 

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 

25 

26 return SuccessResponse.respond("Seeding Successful") 

27 

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)) 

31 

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)) 

35 

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))