"""回收站 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}