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.

66 lines
2.6 KiB

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