3 changed files with 98 additions and 67 deletions
@ -1,90 +1,75 @@ |
|||
from fastapi import Depends, APIRouter, status,Query,Path,HTTPException |
|||
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 |
|||
from internal.database import fetch_one, fetch_all, execute_query, response_success, raise_if_exists,raise_if_not_found |
|||
from dependencies import get_current_active_user |
|||
|
|||
|
|||
router = APIRouter( |
|||
prefix="/blogs", |
|||
tags=['博客管理'] |
|||
) |
|||
# 获取列表 |
|||
@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 = fetch_all(select_query) |
|||
return response_success(blog_list, "blog get list success") |
|||
|
|||
|
|||
@router.post('/add', response_model=ResponseMessage) |
|||
# 博客新增 |
|||
@router.post('/add') |
|||
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 |
|||
} |
|||
select_query = "SELECT * FROM blogs WHERE blogtitle = %s" |
|||
existing_blog = fetch_one(select_query, (blog.blogtitle,)) |
|||
raise_if_exists(existing_blog, "blog is already exists") |
|||
insert_query = "INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES (%s,%s,%s,%s)" |
|||
insert_data = (blog.blogtitle, blog.blogcontent, blog.typeid, blog.descr) |
|||
execute_query(insert_query, insert_data) |
|||
return response_success(data=blog,message="blog create success") |
|||
|
|||
# 博客删除 |
|||
@router.delete("/delete/{id}") |
|||
async def blog_delete(id: str = Path(description="博客id")): |
|||
select_query = "SELECT * FROM blogs WHERE id = %s" |
|||
existing_blog=fetch_one(select_query,(id,)) |
|||
raise_if_not_found(existing_blog,"blog not found") |
|||
insert_query = "DELETE FROM blogs WHERE id = %s" |
|||
execute_query(insert_query, (id,)) |
|||
return response_success(message="blog delete success") |
|||
|
|||
@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.put("/update/{id}") |
|||
async def blog_put(blog: Blog, id: str = Path(description="博客id")): |
|||
select_query="SELECT * FROM blogs WHERE id=%s" |
|||
existing_blog=fetch_one(select_query,(id,)) |
|||
raise_if_not_found(existing_blog,"blog not found") |
|||
update_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(update_query, update_data) |
|||
return response_success("blog update sucess") |
|||
|
|||
# 博客查询 |
|||
@router.get("/list/search") |
|||
async def blog_list_search( |
|||
blogtitle: str= Query(None, description="博客标题"), |
|||
blogtitle: str = Query(None, description="博客标题"), |
|||
typename: str = Query(None, description="博客类型"), |
|||
start_date:str=Query(None,description="开始时间"), |
|||
end_date: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!" |
|||
} |
|||
blog_list = fetch_all(select_query, params=params, fetchall=True) |
|||
return response_success(data=blog_list,message="blog serach succuessfully!") |
Write
Preview
Loading…
Cancel
Save
Reference in new issue