79 lines
2.6 KiB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. from fastapi import Depends, APIRouter, status,Query,HTTPException
  2. from internal.models import *
  3. from dependencies import get_current_active_user, execute_query
  4. from datetime import datetime
  5. router = APIRouter(
  6. prefix="/blogs",
  7. tags=['博客管理']
  8. )
  9. @router.post('/add', response_model=ResponseMessage)
  10. async def blog_add(blog: Blog, _: User = Depends(get_current_active_user)):
  11. select_query = "INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES (%s,%s,%s,%s)"
  12. blog_data = (blog.blogtitle, blog.blogcontent, blog.typeid, blog.descr)
  13. execute_query(select_query, blog_data)
  14. return {
  15. 'status': status.HTTP_200_OK,
  16. 'message': 'blog create successfully!',
  17. 'data': blog
  18. }
  19. @router.get("/list")
  20. async def blog_list():
  21. select_query = "SELECT blogtitle, blogcontent, typename, create_at, update_at, blogs.descr FROM blogs LEFT JOIN `types` ON blogs.typeid = types.id ORDER BY create_at DESC;"
  22. blog_list = execute_query(select_query, fetchall=True)
  23. return {
  24. 'status': status.HTTP_200_OK,
  25. 'message': 'blog search succuessfully!',
  26. 'data': blog_list
  27. }
  28. @router.get("/list/search")
  29. async def blog_list_search(
  30. blogtitle: str= Query(None, description="博客标题"),
  31. typename: str = Query(None, description="博客类型"),
  32. start_date:str=Query(None,description="开始时间"),
  33. end_date:str=Query(None,description="结束时间"),
  34. ):
  35. select_query = "SELECT blogtitle, blogcontent, typename, create_at, update_at, blogs.descr FROM blogs LEFT JOIN `types` ON blogs.typeid = types.id WHERE 1=1"
  36. params = []
  37. if blogtitle:
  38. select_query += " AND blogtitle LIKE %s"
  39. params.append(f"%{blogtitle}%")
  40. if typename:
  41. select_query += " AND typename LIKE %s"
  42. params.append(f"%{typename}%")
  43. if start_date:
  44. select_query += " AND create_at >= %s"
  45. params.append(start_date)
  46. if end_date:
  47. select_query += " AND create_at <= %s"
  48. params.append(end_date)
  49. # 添加排序条件
  50. select_query += " ORDER BY create_at DESC"
  51. # 执行查询
  52. blog_list = execute_query(select_query, params=params, fetchall=True)
  53. return {
  54. 'status': status.HTTP_200_OK,
  55. 'message': 'blog serach succuessfully!',
  56. 'data': blog_list
  57. }
  58. @router.delete("/delete")
  59. async def blog_delete(blogtitle:str=Query(description="博客标题")):
  60. select_query="DELETE FROM blogs WHERE blogtitle = %s"
  61. delete_data=(blogtitle,)
  62. execute_query(select_query,delete_data)
  63. return {
  64. "status": status.HTTP_200_OK,
  65. "message": "Blog deleted successfully!"
  66. }