Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/recipe/shared_routes.py: 41%

25 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-25 15:32 +0000

1from fastapi import APIRouter, Depends, HTTPException 1a

2from pydantic import UUID4 1a

3from sqlalchemy.orm.session import Session 1a

4 

5from mealie.core.root_logger import get_logger 1a

6from mealie.db.db_setup import generate_session 1a

7from mealie.repos.all_repositories import get_repositories 1a

8from mealie.schema.recipe import Recipe 1a

9from mealie.schema.response import ErrorResponse 1a

10 

11router = APIRouter() 1a

12 

13logger = get_logger() 1a

14 

15 

16@router.get("/shared/{token_id}", response_model=Recipe) 1a

17def get_shared_recipe(token_id: UUID4, session: Session = Depends(generate_session)): 1a

18 db = get_repositories(session, group_id=None, household_id=None) 

19 

20 token_summary = db.recipe_share_tokens.get_one(token_id) 

21 if token_summary and token_summary.is_expired: 

22 try: 

23 db.recipe_share_tokens.delete(token_id) 

24 session.commit() 

25 except Exception: 

26 logger.exception(f"Failed to delete expired token {token_id}") 

27 session.rollback() 

28 token_summary = None 

29 

30 if token_summary is None: 

31 raise HTTPException(status_code=404, detail=ErrorResponse.respond("Token Not Found")) 

32 

33 return token_summary.recipe