|
|
from fastapi import Depends, APIRouter, status,Query,Path,HTTPException from internal.models import * from dependencies import get_current_active_user, execute_query from datetime import datetime
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 blogs.id, 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/search") async def blog_list_search( 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 blogs.id, 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 serach succuessfully!', 'data': blog_list }
@router.delete("/delete/{id}") async def blog_delete(id:str=Path(description="博客id")): select_query="DELETE FROM blogs WHERE id = %s" delete_data=(id,) execute_query(select_query,delete_data) return { "status": status.HTTP_200_OK, "message": "Blog deleted successfully!" }
@router.put("/update/{id}") async def blog_put(blog:Blog,id:str=Path(description="博客id")): select_query="UPDATE blogs SET blogtitle=%s,blogcontent=%s,typeid=%s,descr=%s WHERE id=%s;" update_data=(blog.blogtitle,blog.blogcontent,blog.typeid,blog.descr,id) execute_query(select_query,update_data) return{ "status": status.HTTP_200_OK, "message": "Blog deleted successfully!" }
|