mini-rbac/backend/controller/menu.py

41 lines
1.3 KiB
Python
Raw Normal View History

2022-10-04 04:40:11 +00:00
# router service db router+service db
from fastapi import APIRouter
2022-09-16 03:52:08 +00:00
from core.utils import list_to_tree
2022-09-19 10:02:37 +00:00
from dbhelper.menu import del_menu, get_menu, get_tree_menu, insert_menu, put_menu
from schemas import MenuIn, MenuRead, Response
2022-09-11 10:34:18 +00:00
2022-10-04 04:40:11 +00:00
router = APIRouter(prefix="/menu", tags=["菜单管理"])
2022-09-11 10:34:18 +00:00
2022-10-04 04:40:11 +00:00
@router.post("", summary="菜单新增", response_model=Response[MenuRead])
async def menu_add(data: MenuIn):
2022-09-12 07:11:12 +00:00
return Response(data=await insert_menu(data))
2022-09-12 15:22:18 +00:00
2022-10-04 04:40:11 +00:00
@router.get("", summary="菜单列表", response_model=Response)
async def menu_arr():
2022-09-16 03:52:08 +00:00
menus = await get_tree_menu()
2022-09-19 10:02:37 +00:00
try:
data = list_to_tree(menus)
except KeyError:
return Response(code=400, msg="菜单根节点丢失")
return Response(data=data)
2022-09-12 15:22:18 +00:00
2022-10-04 04:40:11 +00:00
@router.delete("/{pk}", summary="菜单删除", response_model=Response)
async def menu_del(pk: int):
2022-09-19 10:02:37 +00:00
if await get_menu({"pid": pk}) is not None:
return Response(code=400, msg="请先删除子节点")
2022-09-12 15:22:18 +00:00
if await del_menu(pk) == 0:
return Response(code=400, msg="菜单不存在")
return Response()
2022-09-13 08:53:31 +00:00
2022-10-04 04:40:11 +00:00
@router.put("/{pk}", summary="菜单更新", response_model=Response)
async def menu_put(pk: int, data: MenuIn):
2022-09-13 08:53:31 +00:00
"""更新菜单"""
if await put_menu(pk, data) == 0:
return Response(code=400, msg="菜单不存在")
return Response()