_decorators.py
533 Bytes
from functools import wraps
from fastapi import HTTPException
from sqlalchemy.exc import NoResultFound
def not_found(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
try:
value = fn(*args, **kwargs)
except NoResultFound as exc:
raise HTTPException(status_code=404, detail='Not found') from exc
if value is None:
raise HTTPException(status_code=404, detail='Not found')
if isinstance(value, (list, dict)) and not value:
raise HTTPException(status_code=404, detail='Not found')
return value
return wrapper