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.

70 lines
2.3 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
  1. from fastapi import Depends, APIRouter, status,Query
  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/bytitle")
  29. async def blog_list_bytitle(
  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. print(f"Start Date: {type(start_date)}, End Date: {end_date}")
  36. 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"
  37. params = []
  38. if blogtitle:
  39. select_query += " AND blogtitle LIKE %s"
  40. params.append(f"%{blogtitle}%")
  41. if typename:
  42. select_query += " AND typename LIKE %s"
  43. params.append(f"%{typename}%")
  44. if start_date:
  45. select_query += " AND create_at >= %s"
  46. params.append(start_date)
  47. if end_date:
  48. select_query += " AND create_at <= %s"
  49. params.append(end_date)
  50. # 添加排序条件
  51. select_query += " ORDER BY create_at DESC"
  52. # 执行查询
  53. blog_list = execute_query(select_query, params=params, fetchall=True)
  54. return {
  55. 'status': status.HTTP_200_OK,
  56. 'message': 'blog bytitle succuessfully!',
  57. 'data': blog_list
  58. }