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

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
}