from fastapi import Depends, APIRouter, status,Query from internal.models import * from dependencies import get_current_active_user, execute_query router = APIRouter( prefix="/blogs", tags=['博客管理'] ) @router.post('/add', response_model=ResponseMessage) async def blog_add(blog: Blog, _: User = Depends(get_current_active_user)): select_query = "INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES (%s,%s,%s,%s)" blog_data = (blog.blogtitle, blog.blogcontent, blog.typeid, blog.descr) execute_query(select_query, blog_data) return { 'status': status.HTTP_200_OK, 'message': 'blog create successfully!', 'data': blog } @router.get("/list") async def blog_list(): 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;" blog_list = execute_query(select_query, fetchall=True) return { 'status': status.HTTP_200_OK, 'message': 'blog search succuessfully!', 'data': blog_list } @router.get("/list/bytitle") async def blog_list_bytitle( blogtitle: str= Query(None, description="博客标题"), typename: str = Query(None, description="博客类型"), # start_date:str=Query(None,description="开始时间"), # end_date:str=Query(None,description="开始时间"), ): 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" params = [] if blogtitle: select_query += " AND blogtitle LIKE %s" params.append(f"%{blogtitle}%") if typename: select_query += " AND typename LIKE %s" params.append(f"%{typename}%") # if start_date: # select_query += " AND create_at >= %s" # params.append(start_date) # if end_date: # select_query += " AND create_at <= %s" # params.append(end_date) # 添加排序条件 select_query += " ORDER BY create_at DESC" # 执行查询 blog_list = execute_query(select_query, params=params, fetchall=True) return { 'status': status.HTTP_200_OK, 'message': 'blog bytitle succuessfully!', 'data': blog_list }