Example #1
0
from fastapi import APIRouter, Depends, HTTPException
from starlette import status

from app.models import Recipe, RecipeCreate, RecipeRead, UserDB
from app.users import current_active_user

router = APIRouter(tags=["recipes"])
router.responses = {
    status.HTTP_401_UNAUTHORIZED: {
        "description": "Missing token or inactive user.",
    },
    status.HTTP_404_NOT_FOUND: {
        "description": "The user does not exist.",
    },
}


@router.get("/users/me/recipes", response_model=list[RecipeRead])
async def get_recipes(user: UserDB = Depends(current_active_user)):
    recipes = await Recipe.filter(user_id=user.id)
    return [await RecipeRead.from_tortoise_orm(recipe) for recipe in recipes]


@router.get("/users/me/recipes/{recipe_id}", response_model=RecipeRead)
async def get_recipe(recipe_id: int,
                     user: UserDB = Depends(current_active_user)):
    recipe = await Recipe.filter(user_id=user.id, id=recipe_id)
    if not recipe:
        raise HTTPException(status_code=404)
    return await RecipeRead.from_tortoise_orm(recipe[0])