from fastapi import Depends, APIRouter, status, Query, Path, HTTPException,Request 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 from limiter_config import limiter router = APIRouter( prefix="/comlinks", tags=['链接管理'] ) # 获取列表 @router.get("/list") @limiter.limit("10/minute") async def comlink_list(request: Request,): select_query = "SELECT id,linktext,linkurl,descr FROM comlinks;" comlink_list = fetch_all(select_query) return response_success(comlink_list, "comlink get list success") # 新增 @router.post("/add") @limiter.limit("10/minute") async def link_add(request: Request,link:ComLink,_: User = Depends(get_current_active_user)): 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") @limiter.limit("10/minute") async def link_search(request: Request,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}") @limiter.limit("10/minute") async def link_put(request: Request,link:ComLink,id: str = Path(description="链接id"),_: User = Depends(get_current_active_user)): 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}") @limiter.limit("10/minute") async def link_del(request: Request,id: str = Path(description="链接id"),_: User = Depends(get_current_active_user)): 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}") @limiter.limit("10/minute") async def link_search_id(request: Request,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")