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.
61 lines
2.2 KiB
61 lines
2.2 KiB
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="/bloglabels",
|
|
tags=['博客标签']
|
|
)
|
|
# 获取列表
|
|
@router.get("/list")
|
|
async def label_list():
|
|
select_query = "SELECT id,labelname,descr FROM labels;"
|
|
label_list = fetch_all(select_query)
|
|
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")
|