diff --git a/internal/models.py b/internal/models.py index 61958d5..74e95a9 100644 --- a/internal/models.py +++ b/internal/models.py @@ -71,21 +71,40 @@ class Classtic(BaseModel): description="备注允许为空" )] -class TypeList(BaseModel): - blogid:Annotated[int,Field( - title="博客id", +class ComLink(BaseModel): + linktext:Annotated[str,Field( + title="链接名称", + description="名称不允许为空" + )] + linkurl:Annotated[str,Field( + title="链接地址", + description="地址不允许为空" + )] + descr:Annotated[str,Field( + title="备注", default=None, - description="博客id可以为空" + description="备注允许为空" )] + +class Type(BaseModel): typename:Annotated[str,Field( title="类型名称", - examples=['typename'], - pattern=r'^.{2,50}$', - description="允许2-50个字符" + description="名称不允许为空" + )] + descr:Annotated[str,Field( + title="备注", + default=None, + description="备注允许为空" + )] + +class Label(BaseModel): + labelname:Annotated[str,Field( + title="标签名称", + description="名称不允许为空" )] descr:Annotated[str,Field( title="备注", default=None, - description="博客类型允许为空" + description="备注允许为空" )] \ No newline at end of file diff --git a/routers/blogmanage.py b/routers/blogmanage.py index c17896a..86c1fb4 100644 --- a/routers/blogmanage.py +++ b/routers/blogmanage.py @@ -1,4 +1,4 @@ -from fastapi import Depends, APIRouter, status, Query, Path, HTTPException +from fastapi import Depends, APIRouter, Query, Path from internal.models import * from internal.database import ( fetch_one, @@ -13,8 +13,6 @@ from dependencies import get_current_active_user router = APIRouter(prefix="/blogs", tags=["博客管理"]) # 获取列表 - - @router.get("/list") async def blog_list(): select_query = """ diff --git a/routers/commonlinkmanage.py b/routers/commonlinkmanage.py index c22e973..9cbd31b 100644 --- a/routers/commonlinkmanage.py +++ b/routers/commonlinkmanage.py @@ -4,7 +4,7 @@ from internal.database import fetch_one, fetch_all, execute_query, response_succ from dependencies import get_current_active_user router = APIRouter( - prefix="/comlink", + prefix="/comlinks", tags=['链接管理'] ) # 获取列表 @@ -12,4 +12,52 @@ router = APIRouter( async def comlink_list(): select_query = "SELECT id,linktext,linkurl,descr FROM comlinks;" comlink_list = fetch_all(select_query) - return response_success(comlink_list, "comlink get list success") \ No newline at end of file + return response_success(comlink_list, "comlink get list success") + + +# 新增 +@router.post("/add") +async def link_add(link:ComLink): + insert_query="""INSERT INTO comlinks (linktext,linkurl,descr) VALUES(%s,%s,%s)""" + insert_value=(link.linktext,link.linkurl,link.descr) + execute_query(insert_query,insert_value) + return response_success(data=link,message="link create success") + +# 单条数据查询 +@router.get("/list/search") +async def link_search(linktext:str=Query(description="链接名称")): + select_query="SELECT id,linktext,linkurl,descr FROM comlinks WHERE 1=1 " + params=[] + if linktext: + select_query+="AND linktext LIKE %s" + params.append(f"%{linktext}%") + link_query=fetch_all(select_query,params=params,fetchall=True) + return response_success(data=link_query,message="link search success") + +# 链接修改 +@router.put("/update/{id}") +async def link_put(link:ComLink,id: str = Path(description="链接id")): + update_query = ( + "UPDATE comlinks SET linktext=%s,linkurl=%s,descr=%s WHERE id=%s;" + ) + update_data = (link.linktext, link.linkurl, + link.descr,id) + execute_query(update_query, update_data) + return response_success("link update sucess") + +# 链接删除 +@router.delete("/delete/{id}") +async def link_del(id: str = Path(description="链接id")): + update_query = ( + "DELETE FROM comlinks WHERE id=%s;" + ) + update_data = (id) + execute_query(update_query, update_data) + return response_success() + +# 根据id查询链接 +@router.get("/list/search/{id}") +async def link_search_id(id:str=Path(description="链接id")): + select_query="SELECT * FROM comlinks WHERE id=%s" + link_query=fetch_one(select_query,(id,)) + return response_success(data=link_query,message="link search success") \ No newline at end of file diff --git a/routers/labelmanage.py b/routers/labelmanage.py index 38ba8de..bb769e2 100644 --- a/routers/labelmanage.py +++ b/routers/labelmanage.py @@ -10,6 +10,52 @@ router = APIRouter( # 获取列表 @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;" + select_query = "SELECT id,labelname,descr FROM labels;" label_list = fetch_all(select_query) - return response_success(label_list, "label get list success") \ No newline at end of file + return response_success(label_list, "label get list success") + +# 新增 +@router.post("/add") +async def label_add(label:Label): + insert_query="""INSERT INTO labels (labelname,descr) VALUES(%s,%s)""" + insert_value=(label.labelname,label.descr) + execute_query(insert_query,insert_value) + return response_success(data=label,message="label create success") + +# 单条数据查询 +@router.get("/list/search") +async def label_search(labelname:str=Query(description="标签名称")): + select_query="SELECT id,labelname,descr FROM labels WHERE 1=1 " + params=[] + if labelname: + select_query+="AND labelname LIKE %s" + params.append(f"%{labelname}%") + label_query=fetch_all(select_query,params=params,fetchall=True) + return response_success(data=label_query,message="label search success") + +# 语录修改 +@router.put("/update/{id}") +async def label_put(label:Label,id: str = Path(description="标签id")): + update_query = ( + "UPDATE labels SET labelname=%s,descr=%s WHERE id=%s;" + ) + update_data = (label.labelname,label.descr,id) + execute_query(update_query, update_data) + return response_success("label update sucess") + +# 语录删除 +@router.delete("/delete/{id}") +async def label_del(id: str = Path(description="标签id")): + update_query = ( + "DELETE FROM labels WHERE id=%s;" + ) + update_data = (id) + execute_query(update_query, update_data) + return response_success() + +# 根据id查询语录 +@router.get("/list/search/{id}") +async def label_search_id(id:str=Path(description="标签id")): + select_query="SELECT * FROM labels WHERE id=%s" + label_query=fetch_one(select_query,(id,)) + return response_success(data=label_query,message="label search success") \ No newline at end of file diff --git a/routers/typemanage.py b/routers/typemanage.py index bf12239..594e458 100644 --- a/routers/typemanage.py +++ b/routers/typemanage.py @@ -1,17 +1,61 @@ -from fastapi import APIRouter, Depends, status +from fastapi import Depends, APIRouter, status, Query, Path, HTTPException from internal.models import * -from dependencies import get_current_active_user, execute_query +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="/types", - tags=["分类管理"] + tags=['类型管理'] ) - +# 获取列表 @router.get("/list") -async def read_type_all(): +async def type_list(): select_query = "SELECT id,typename,descr FROM types;" - type_all = execute_query(select_query, fetchall=True) - return { - "status": status.HTTP_200_OK, - "message": "type search successfully!", - "data": type_all - } + type_list = fetch_all(select_query) + return response_success(type_list, "type get list success") + +# 新增 +@router.post("/add") +async def type_add(type:Type): + insert_query="""INSERT INTO types (typename,descr) VALUES(%s,%s)""" + insert_value=(type.typename,type.descr) + execute_query(insert_query,insert_value) + return response_success(data=type,message="type create success") + +# 单条数据查询 +@router.get("/list/search") +async def type_search(typename:str=Query(description="类型名称")): + select_query="SELECT id,typename,descr FROM types WHERE 1=1 " + params=[] + if typename: + select_query+="AND typename LIKE %s" + params.append(f"%{typename}%") + type_query=fetch_all(select_query,params=params,fetchall=True) + return response_success(data=type_query,message="type search success") + +# 语录修改 +@router.put("/update/{id}") +async def type_put(type:Type,id: str = Path(description="类型id")): + update_query = ( + "UPDATE types SET typename=%s,descr=%s WHERE id=%s;" + ) + update_data = (type.typename,type.descr,id) + execute_query(update_query, update_data) + return response_success("type update sucess") + +# 语录删除 +@router.delete("/delete/{id}") +async def type_del(id: str = Path(description="类型id")): + update_query = ( + "DELETE FROM types WHERE id=%s;" + ) + update_data = (id) + execute_query(update_query, update_data) + return response_success() + +# 根据id查询语录 +@router.get("/list/search/{id}") +async def type_search_id(id:str=Path(description="类型id")): + select_query="SELECT * FROM types WHERE id=%s" + type_query=fetch_one(select_query,(id,)) + return response_success(data=type_query,message="type search success") \ No newline at end of file