fastfood/fastfood/routers/submenu.py

97 lines
2.0 KiB
Python

from uuid import UUID
from fastapi import APIRouter, Depends, HTTPException
from fastfood.schemas import MenuBase, SubMenuRead
from fastfood.service.submenu import SubmenuService
router = APIRouter(
prefix='/api/v1/menus/{menu_id}/submenus',
tags=['submenu'],
)
@router.get(
'/',
response_model=list[SubMenuRead],
)
async def get_submenus(
menu_id: UUID,
submenu: SubmenuService = Depends(),
) -> list[SubMenuRead]:
result = await submenu.read_submenus(menu_id=menu_id)
return result
@router.post(
'/',
status_code=201,
response_model=SubMenuRead,
)
async def create_submenu_item(
menu_id: UUID,
submenu_data: MenuBase,
submenu: SubmenuService = Depends(),
) -> SubMenuRead:
result = await submenu.create_submenu(
menu_id=menu_id,
submenu_data=submenu_data,
)
return result
@router.get(
'/{submenu_id}',
response_model=SubMenuRead,
)
async def get_submenu(
menu_id: UUID,
submenu_id: UUID,
submenu: SubmenuService = Depends(),
) -> SubMenuRead:
result = await submenu.read_menu(
menu_id=menu_id,
submenu_id=submenu_id,
)
if not result:
raise HTTPException(
status_code=404,
detail='submenu not found',
)
return result
@router.patch(
'/{submenu_id}',
response_model=SubMenuRead,
)
async def update_submenu(
menu_id: UUID,
submenu_id: UUID,
submenu_data: MenuBase,
submenu: SubmenuService = Depends(),
) -> SubMenuRead:
result = await submenu.update_submenu(
menu_id=menu_id,
submenu_id=submenu_id,
submenu_data=submenu_data,
)
if not result:
raise HTTPException(
status_code=404,
detail='submenu not found',
)
return result
@router.delete(
'/{submenu_id}',
)
async def delete_submenu(
menu_id: UUID,
submenu_id: UUID,
submenu: SubmenuService = Depends(),
) -> None:
await submenu.del_menu(menu_id=menu_id, submenu_id=submenu_id)