diff --git a/routers/statistic.py b/routers/statistic.py index fedf4e2..4dc59f3 100644 --- a/routers/statistic.py +++ b/routers/statistic.py @@ -55,4 +55,59 @@ async def get_homepage_data(): # 合并博客和日记数据,按照创建日期降序排序 combined_data = sorted(blog_list + diary_list, key=lambda x: x['create_at'], reverse=True) + return {"data": combined_data} + +@router.get("/searchtitle") +async def search_homepage_data(title: str = Query("", description="Title to search for")): + # 查询博客数据 + select_blog = """ + SELECT + blogs.id, + blogs.blogtitle, + blogs.blogcontent, + blogs.create_at, + blogs.imglink, + blogs.wordcount, + blogtypes.typename, + JSON_ARRAYAGG(labels.labelname) AS labelnames + FROM blogs + LEFT JOIN blogtypes ON blogs.typeid = blogtypes.id + LEFT JOIN blog_label ON blog_label.blogid = blogs.id + LEFT JOIN labels ON blog_label.labelid = labels.id + WHERE blogs.blogtitle LIKE %s + GROUP BY + blogs.id, + blogs.blogtitle, + blogs.blogcontent, + blogs.create_at, + blogs.imglink, + blogs.wordcount, + blogtypes.typename + ORDER BY create_at DESC + """ + blog_list =fetch_all(select_blog, ('%' + title + '%',)) + + # 查询日记数据 + select_diary = """ + SELECT + diarys.id, + diarys.diarytitle, + diarys.diarycontent, + diarys.imglink, + diarytypes.typename, + diarys.create_at, + diarys.update_at + FROM diarys + LEFT JOIN diarytypes ON diarys.typeid = diarytypes.id + WHERE diarys.diarytitle LIKE %s + ORDER BY create_at DESC + """ + diary_list =fetch_all(select_diary, ('%' + title + '%',)) + + # 合并博客和日记数据,按照创建日期降序排序 + filtered_blog_list = [item for item in blog_list if item.get('create_at')] + filtered_diary_list = [item for item in diary_list if item.get('create_at')] + combined_list = filtered_blog_list + filtered_diary_list + combined_data = sorted(combined_list, key=lambda x: x['create_at'], reverse=True) + return {"data": combined_data} \ No newline at end of file