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.
90 lines
3.0 KiB
90 lines
3.0 KiB
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!"
|
|
}
|