You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
2.2 KiB

9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
  1. from fastapi import Depends, APIRouter, status, Query, Path, HTTPException
  2. from internal.models import *
  3. from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists,raise_if_not_found
  4. from dependencies import get_current_active_user
  5. router = APIRouter(
  6. prefix="/labels",
  7. tags=['标签管理']
  8. )
  9. # 获取列表
  10. @router.get("/list")
  11. async def label_list():
  12. select_query = "SELECT id,labelname,descr FROM labels;"
  13. label_list = fetch_all(select_query)
  14. return response_success(label_list, "label get list success")
  15. # 新增
  16. @router.post("/add")
  17. async def label_add(label:Label):
  18. insert_query="""INSERT INTO labels (labelname,descr) VALUES(%s,%s)"""
  19. insert_value=(label.labelname,label.descr)
  20. execute_query(insert_query,insert_value)
  21. return response_success(data=label,message="label create success")
  22. # 单条数据查询
  23. @router.get("/list/search")
  24. async def label_search(labelname:str=Query(description="标签名称")):
  25. select_query="SELECT id,labelname,descr FROM labels WHERE 1=1 "
  26. params=[]
  27. if labelname:
  28. select_query+="AND labelname LIKE %s"
  29. params.append(f"%{labelname}%")
  30. label_query=fetch_all(select_query,params=params,fetchall=True)
  31. return response_success(data=label_query,message="label search success")
  32. # 标签修改
  33. @router.put("/update/{id}")
  34. async def label_put(label:Label,id: str = Path(description="标签id")):
  35. update_query = (
  36. "UPDATE labels SET labelname=%s,descr=%s WHERE id=%s;"
  37. )
  38. update_data = (label.labelname,label.descr,id)
  39. execute_query(update_query, update_data)
  40. return response_success("label update sucess")
  41. # 标签删除
  42. @router.delete("/delete/{id}")
  43. async def label_del(id: str = Path(description="标签id")):
  44. update_query = (
  45. "DELETE FROM labels WHERE id=%s;"
  46. )
  47. update_data = (id)
  48. execute_query(update_query, update_data)
  49. return response_success()
  50. # 根据id查询标签
  51. @router.get("/list/search/{id}")
  52. async def label_search_id(id:str=Path(description="标签id")):
  53. select_query="SELECT * FROM labels WHERE id=%s"
  54. label_query=fetch_one(select_query,(id,))
  55. return response_success(data=label_query,message="label search success")