diff --git a/app/main.py b/app/main.py index 52a5815..ead4bf1 100644 --- a/app/main.py +++ b/app/main.py @@ -302,3 +302,44 @@ def version(): "version": "0.1.0", "description": "Agent/人类协同任务管理平台" } + + +# ============ Projects (update/delete) ============ + +@app.patch("/projects/{project_id}", response_model=schemas.ProjectResponse) +def update_project(project_id: int, project_update: schemas.ProjectUpdate, db: Session = Depends(get_db)): + project = db.query(models.Project).filter(models.Project.id == project_id).first() + if not project: + raise HTTPException(status_code=404, detail="Project not found") + update_data = project_update.model_dump(exclude_unset=True) + for field, value in update_data.items(): + setattr(project, field, value) + db.commit() + db.refresh(project) + return project + + +@app.delete("/projects/{project_id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_project(project_id: int, db: Session = Depends(get_db)): + project = db.query(models.Project).filter(models.Project.id == project_id).first() + if not project: + raise HTTPException(status_code=404, detail="Project not found") + db.delete(project) + db.commit() + return None + + +# ============ Users (update/delete) ============ + +@app.patch("/users/{user_id}", response_model=schemas.UserResponse) +def update_user(user_id: int, db: Session = Depends(get_db), full_name: str = None, email: str = None): + user = db.query(models.User).filter(models.User.id == user_id).first() + if not user: + raise HTTPException(status_code=404, detail="User not found") + if full_name is not None: + user.full_name = full_name + if email is not None: + user.email = email + db.commit() + db.refresh(user) + return user