Browse Source

add new

master
panda 9 months ago
parent
commit
c66df350b2
  1. 17
      internal/models.py
  2. 3
      main.py
  3. 70
      routers/blogmanage.py
  4. 23
      routers/classticmanage.py
  5. 15
      routers/labelmanage.py

17
internal/models.py

@ -9,9 +9,6 @@ class Token(BaseModel):
class TokenData(BaseModel): class TokenData(BaseModel):
username: str = None username: str = None
# User相关的模型 # User相关的模型
class User(BaseModel): class User(BaseModel):
username: Annotated[str,Field( username: Annotated[str,Field(
@ -59,6 +56,20 @@ class Blog(BaseModel):
description="备注允许为空" description="备注允许为空"
)] )]
class Classtic(BaseModel):
header:Annotated[str,Field(
title="语录名称",
description="语录名称不允许为空"
)]
text:Annotated[str,Field(
title="语录内容",
description="语录内容不允许为空"
)]
descr:Annotated[str,Field(
title="备注",
default=None,
description="备注允许为空"
)]
class TypeList(BaseModel): class TypeList(BaseModel):
blogid:Annotated[int,Field( blogid:Annotated[int,Field(

3
main.py

@ -4,13 +4,14 @@ from fastapi import Depends, FastAPI, HTTPException, status
from dependencies import * from dependencies import *
from internal.models import Token from internal.models import Token
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from routers import usermanage,typemanage,blogmanage,classticmanage,commonlinkmanage
from routers import usermanage,typemanage,blogmanage,classticmanage,commonlinkmanage,labelmanage
app=FastAPI() app=FastAPI()
app.include_router(usermanage.router) app.include_router(usermanage.router)
app.include_router(typemanage.router) app.include_router(typemanage.router)
app.include_router(blogmanage.router) app.include_router(blogmanage.router)
app.include_router(classticmanage.router) app.include_router(classticmanage.router)
app.include_router(commonlinkmanage.router) app.include_router(commonlinkmanage.router)
app.include_router(labelmanage.router)
# 解决跨域 # 解决跨域
app.add_middleware( app.add_middleware(
CORSMiddleware, CORSMiddleware,

70
routers/blogmanage.py

@ -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")
# 我就测试一下 # 我就测试一下

23
routers/classticmanage.py

@ -4,12 +4,31 @@ from internal.database import fetch_one, fetch_all, execute_query, response_succ
from dependencies import get_current_active_user from dependencies import get_current_active_user
router = APIRouter( router = APIRouter(
prefix="/classtic",
prefix="/classtics",
tags=['语录管理'] tags=['语录管理']
) )
# 获取列表 # 获取列表
@router.get("/list") @router.get("/list")
async def classtic_list(): async def classtic_list():
select_query = "SELECT id,header,TEXT FROM classtics;"
select_query = "SELECT id,header,`text`,descr FROM classtics;"
classtic_list = fetch_all(select_query) classtic_list = fetch_all(select_query)
return response_success(classtic_list, "classtic get list success") return response_success(classtic_list, "classtic get list success")
# 新增
@router.post("/add")
async def classtic_add(classtic:Classtic):
insert_query="""INSERT INTO classtics (header,`text`,descr) VALUES(%s,%s,%s)"""
insert_value=(classtic.header,classtic.text,classtic.descr)
execute_query(insert_query,insert_value)
return response_success(data=classtic,message="classtic create success")
# 单条数据查询
@router.get("/search")
async def classtic_search(header:str=Query(description="语录标题")):
select_query="SELECT header FROM classtics WHERE 1=1 "
params=[]
if header:
select_query+="AND header LIKE %s"
params.append(f"%{header}%")
classtic_query=fetch_all(select_query,params=params,fetchall=True)
return response_success(data=classtic_query,message="classtic search success")

15
routers/labelmanage.py

@ -0,0 +1,15 @@
from fastapi import Depends, APIRouter, status, Query, Path, HTTPException
from internal.models import *
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="/labels",
tags=['标签管理']
)
# 获取列表
@router.get("/list")
async def label_list():
select_query = "SELECT blogs.`blogtitle`,labels.`labelname` FROM blogs LEFT JOIN blog_label ON blog_label.`blogid`=blogs.`id` LEFT JOIN labels ON blog_label.`labelid`=labels.id;"
label_list = fetch_all(select_query)
return response_success(label_list, "label get list success")
Loading…
Cancel
Save