回收站,软删除(三天自动清空),以及默认链接三十分钟失效
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
"""回收站 API 路由。"""
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.api.deps import get_current_user, get_db
|
||||
from app.models.user import User
|
||||
from app.services.recycle_bin_service import RecycleBinService
|
||||
|
||||
router = APIRouter(prefix="/recycle-bin", tags=["recycle-bin"])
|
||||
|
||||
|
||||
@router.get("")
|
||||
def list_recycle_bin(
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> dict:
|
||||
"""回收站内容列表。"""
|
||||
return RecycleBinService(db).list_items(user)
|
||||
|
||||
|
||||
@router.post("/documents/{doc_id}/restore", status_code=204)
|
||||
def restore_document(
|
||||
doc_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
RecycleBinService(db).restore_document(doc_id, user)
|
||||
|
||||
|
||||
@router.delete("/documents/{doc_id}", status_code=204)
|
||||
def purge_document(
|
||||
doc_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
"""彻底删除单个文档(文件+记录)。"""
|
||||
RecycleBinService(db).purge_document(doc_id, user)
|
||||
|
||||
|
||||
@router.post("/categories/{cat_id}/restore", status_code=204)
|
||||
def restore_category(
|
||||
cat_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
"""恢复目录(连同同批删除的子目录与文档)。"""
|
||||
RecycleBinService(db).restore_category(cat_id, user)
|
||||
|
||||
|
||||
@router.delete("/categories/{cat_id}", status_code=204)
|
||||
def purge_category(
|
||||
cat_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
"""彻底删除目录(连同同批内容)。"""
|
||||
RecycleBinService(db).purge_category(cat_id, user)
|
||||
|
||||
|
||||
@router.post("/knowledge-bases/{kb_id}/restore", status_code=204)
|
||||
def restore_kb(
|
||||
kb_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
RecycleBinService(db).restore_kb(kb_id, user)
|
||||
|
||||
|
||||
@router.delete("/knowledge-bases/{kb_id}", status_code=204)
|
||||
def purge_kb(
|
||||
kb_id: str,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
"""彻底删除知识库(全部文件+记录)。"""
|
||||
RecycleBinService(db).purge_kb(kb_id, user)
|
||||
|
||||
|
||||
@router.post("/purge-expired")
|
||||
def purge_expired(
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
) -> dict:
|
||||
"""手动触发:彻底清理所有已过保留期的内容。"""
|
||||
count = RecycleBinService(db).purge_expired()
|
||||
return {"purged": count}
|
||||
Reference in New Issue
Block a user