@ -1,52 +1,79 @@
from fastapi import Depends , APIRouter , status , Query , Path , HTTPException
from fastapi import Depends , APIRouter , status , Query , Path , HTTPException
from internal.models import *
from internal.models import *
from internal.database import fetch_one , fetch_all , execute_query , response_success , raise_if_exists , raise_if_not_found
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
from dependencies import get_current_active_user
router = APIRouter (
prefix = " /blogs " ,
tags = [ ' 博客管理 ' ]
)
router = APIRouter ( prefix = " /blogs " , tags = [ " 博客管理 " ] )
# 获取列表
# 获取列表
@router.get ( " /list " )
@router.get ( " /list " )
async def blog_list ( ) :
async def blog_list ( ) :
select_query = " SELECT blogs.id,blogs.blogtitle,blogs.img,blogs.blogcontent,blogs.readnum,blogs.readminite,blogs.wordcount,`types`.typename,labels.labelname,blogs.descr,blogs.create_at,blogs.update_at FROM blogs LEFT JOIN `types` ON blogs.typeid=types.id JOIN labels ON labels.id=blogs.labelid ORDER BY create_at DESC; "
select_query = """
SELECT blogs . blogtitle , blogs . blogcontent , blogs . create_at , blogs . img ,
blogs . readminite , blogs . readnum , blogs . wordcount , types . typename ,
JSON_ARRAYAGG ( labels . labelname ) AS labelnames
FROM blogs
LEFT JOIN `types` ON blogs . typeid = types . id
LEFT JOIN blog_label ON blog_label . blogid = blogs . id
LEFT JOIN labels ON blog_label . labelid = labels . id
GROUP BY blogs . blogtitle , blogs . blogcontent , blogs . create_at , blogs . img ,
blogs . readminite , blogs . readnum , blogs . wordcount , types . typename ;
"""
blog_list = fetch_all ( select_query )
blog_list = fetch_all ( select_query )
return response_success ( blog_list , " blog get list success " )
return response_success ( blog_list , " blog get list success " )
# 博客新增
# 博客新增
@router.post ( ' /add ' )
@router.post ( " /add " )
async def blog_add ( blog : Blog , _ : User = Depends ( get_current_active_user ) ) :
async def blog_add ( blog : Blog , _ : User = Depends ( get_current_active_user ) ) :
select_query = " SELECT * FROM blogs WHERE blogtitle = %s "
select_query = " SELECT * FROM blogs WHERE blogtitle = %s "
existing_blog = fetch_one ( select_query , ( blog . blogtitle , ) )
existing_blog = fetch_one ( select_query , ( blog . blogtitle , ) )
raise_if_exists ( existing_blog , " blog is already exists " )
raise_if_exists ( existing_blog , " blog is already exists " )
insert_query = " INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES ( %s , %s , %s , %s ) "
insert_query = (
" INSERT INTO blogs (blogtitle,blogcontent,typeid,descr) VALUES ( %s , %s , %s , %s ) "
)
insert_data = ( blog . blogtitle , blog . blogcontent , blog . typeid , blog . descr )
insert_data = ( blog . blogtitle , blog . blogcontent , blog . typeid , blog . descr )
execute_query ( insert_query , insert_data )
execute_query ( insert_query , insert_data )
return response_success ( data = blog , message = " blog create success " )
return response_success ( data = blog , message = " blog create success " )
# 博客删除
# 博客删除
@router.delete ( " /delete/{id} " )
@router.delete ( " /delete/{id} " )
async def blog_delete ( id : str = Path ( description = " 博客id " ) ) :
async def blog_delete ( id : str = Path ( description = " 博客id " ) ) :
select_query = " SELECT * FROM blogs WHERE id = %s "
select_query = " SELECT * FROM blogs WHERE id = %s "
existing_blog = fetch_one ( select_query , ( id , ) )
raise_if_not_found ( existing_blog , " blog not found " )
existing_blog = fetch_one ( select_query , ( id , ) )
raise_if_not_found ( existing_blog , " blog not found " )
insert_query = " DELETE FROM blogs WHERE id = %s "
insert_query = " DELETE FROM blogs WHERE id = %s "
execute_query ( insert_query , ( id , ) )
execute_query ( insert_query , ( id , ) )
return response_success ( message = " blog delete success " )
return response_success ( message = " blog delete success " )
# 博客修改
# 博客修改
@router.put ( " /update/{id} " )
@router.put ( " /update/{id} " )
async def blog_put ( blog : Blog , id : str = Path ( description = " 博客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 ; "
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 ,
update_data = ( blog . blogtitle , blog . blogcontent ,
blog . typeid , blog . descr , id )
blog . typeid , blog . descr , id )
execute_query ( update_query , update_data )
execute_query ( update_query , update_data )
return response_success ( " blog update sucess " )
return response_success ( " blog update sucess " )
# 博客模糊查询
# 博客模糊查询
@router.get ( " /list/search " )
@router.get ( " /list/search " )
async def blog_list_search (
async def blog_list_search (
@ -71,12 +98,15 @@ async def blog_list_search(
params . append ( end_date )
params . append ( end_date )
select_query + = " ORDER BY create_at DESC "
select_query + = " ORDER BY create_at DESC "
blog_list = fetch_all ( select_query , params = params , fetchall = True )
blog_list = fetch_all ( select_query , params = params , fetchall = True )
return response_success ( data = blog_list , message = " blog serach succuessfully! " )
return response_success ( data = blog_list , message = " blog serach succuessfully! " )
# 根据id查询博客
# 根据id查询博客
@router.get ( " /list/search/{id} " )
@router.get ( " /list/search/{id} " )
async def get_id_blog ( id : str = Path ( description = " 博客id " ) ) :
select_query = " SELECT * FROM blogs WHERE id= %s "
blog_list = execute_query ( select_query , ( id , ) )
return response_success ( data = blog_list , message = " blog search success " )
async def get_id_blog ( id : str = Path ( description = " 博客id " ) ) :
select_query = " SELECT * FROM blogs WHERE id= %s "
blog_list = execute_query ( select_query , ( id , ) )
return response_success ( data = blog_list , message = " blog search success " )
# 我就测试一下
# 我就测试一下