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.

65 lines
2.6 KiB

7 months ago
10 months ago
9 months ago
7 months ago
10 months ago
8 months ago
11 months ago
9 months ago
10 months ago
7 months ago
8 months ago
9 months ago
7 months ago
8 months ago
9 months ago
8 months ago
7 months ago
8 months ago
9 months ago
7 months ago
9 months ago
8 months ago
9 months ago
7 months ago
9 months ago
8 months ago
9 months ago
8 months ago
7 months ago
8 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="/diarytypes",
  8. tags=['日记分类']
  9. )
  10. # 获取列表
  11. @router.get("/list")
  12. @limiter.limit("10/minute")
  13. async def type_list(request: Request,):
  14. select_query = "SELECT id,typename,descr FROM diarytypes;"
  15. type_list = fetch_all(select_query)
  16. return response_success(type_list, "type get list success")
  17. # 新增
  18. @router.post("/add")
  19. @limiter.limit("10/minute")
  20. async def type_add(request: Request,type:Type,_: User = Depends(get_current_active_user)):
  21. insert_query="""INSERT INTO diarytypes (typename,descr) VALUES(%s,%s)"""
  22. insert_value=(type.typename,type.descr)
  23. execute_query(insert_query,insert_value)
  24. return response_success(data=type,message="type create success")
  25. # 单条数据查询
  26. @router.get("/search")
  27. async def type_search(request: Request,typename:str=Query(description="类型名称")):
  28. select_query="SELECT id,typename,descr FROM diarytypes WHERE 1=1 "
  29. params=[]
  30. if typename:
  31. select_query+="AND typename LIKE %s"
  32. params.append(f"%{typename}%")
  33. type_query=fetch_all(select_query,params=params,fetchall=True)
  34. return response_success(data=type_query,message="type search success")
  35. # 语录修改
  36. @router.put("/update/{id}")
  37. @limiter.limit("10/minute")
  38. async def type_put(request: Request,type:Type,id: str = Path(description="类型id"),_: User = Depends(get_current_active_user)):
  39. update_query = (
  40. "UPDATE diarytypes SET typename=%s,descr=%s WHERE id=%s;"
  41. )
  42. update_data = (type.typename,type.descr,id)
  43. execute_query(update_query, update_data)
  44. return response_success("type update sucess")
  45. # 语录删除
  46. @router.delete("/delete/{id}")
  47. @limiter.limit("10/minute")
  48. async def type_del(request: Request,id: str = Path(description="类型id"),_: User = Depends(get_current_active_user)):
  49. update_query = (
  50. "DELETE FROM diarytypes WHERE id=%s;"
  51. )
  52. update_data = (id)
  53. execute_query(update_query, update_data)
  54. return response_success()
  55. # 根据id查询语录
  56. @router.get("/search/{id}")
  57. @limiter.limit("10/minute")
  58. async def type_search_id(request: Request,id:str=Path(description="类型id")):
  59. select_query="SELECT * FROM diarytypes WHERE id=%s"
  60. type_query=fetch_one(select_query,(id,))
  61. return response_success(data=type_query,message="type search success")