feat: add functionality to manage deleted projects in settings
- Introduced a new section for displaying soft-deleted projects. - Implemented loading of deleted projects via an API call. - Added restore and permanently delete options for each deleted project. - Integrated loading of deleted projects when the data tab is shown.
This commit is contained in:
@@ -654,6 +654,40 @@ async def create_project(request: Request, db: Session = Depends(get_db)):
|
||||
})
|
||||
|
||||
|
||||
@router.get("/deleted")
|
||||
async def list_deleted_projects(db: Session = Depends(get_db)):
|
||||
"""List all soft-deleted projects."""
|
||||
projects = (
|
||||
db.query(Project)
|
||||
.filter(Project.status == "deleted")
|
||||
.order_by(Project.deleted_at.desc())
|
||||
.all()
|
||||
)
|
||||
return JSONResponse([
|
||||
{
|
||||
"id": p.id,
|
||||
"name": p.name,
|
||||
"client_name": p.client_name,
|
||||
"deleted_at": p.deleted_at.isoformat() if p.deleted_at else None,
|
||||
}
|
||||
for p in projects
|
||||
])
|
||||
|
||||
|
||||
@router.post("/{project_id}/restore")
|
||||
async def restore_project(project_id: str, db: Session = Depends(get_db)):
|
||||
"""Restore a soft-deleted project back to active."""
|
||||
project = db.query(Project).filter_by(id=project_id).first()
|
||||
if not project:
|
||||
raise HTTPException(status_code=404, detail="Project not found")
|
||||
if project.status != "deleted":
|
||||
raise HTTPException(status_code=400, detail="Project is not deleted")
|
||||
project.status = "active"
|
||||
project.deleted_at = None
|
||||
db.commit()
|
||||
return {"success": True, "message": f"Project '{project.name}' restored."}
|
||||
|
||||
|
||||
@router.get("/{project_id}")
|
||||
async def get_project(project_id: str, db: Session = Depends(get_db)):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user