feat: issue relations (link/unlink parent-child, list children)
This commit is contained in:
35
app/main.py
35
app/main.py
@@ -693,3 +693,38 @@ def list_activity(
|
||||
if user_id:
|
||||
query = query.filter(ActivityLog.user_id == user_id)
|
||||
return query.order_by(ActivityLog.created_at.desc()).limit(limit).all()
|
||||
|
||||
|
||||
|
||||
# ============ Issue Relations ============
|
||||
|
||||
class IssueRelation(PydanticBaseModel):
|
||||
parent_id: int
|
||||
child_id: int
|
||||
|
||||
@app.post("/issues/link")
|
||||
def link_issues(rel: IssueRelation, db: Session = Depends(get_db)):
|
||||
parent = db.query(models.Issue).filter(models.Issue.id == rel.parent_id).first()
|
||||
child = db.query(models.Issue).filter(models.Issue.id == rel.child_id).first()
|
||||
if not parent or not child:
|
||||
raise HTTPException(status_code=404, detail="Issue not found")
|
||||
if rel.parent_id == rel.child_id:
|
||||
raise HTTPException(status_code=400, detail="Cannot link issue to itself")
|
||||
child.depends_on_id = rel.parent_id
|
||||
db.commit()
|
||||
return {"parent_id": rel.parent_id, "child_id": rel.child_id, "status": "linked"}
|
||||
|
||||
|
||||
@app.delete("/issues/link")
|
||||
def unlink_issues(child_id: int, db: Session = Depends(get_db)):
|
||||
child = db.query(models.Issue).filter(models.Issue.id == child_id).first()
|
||||
if not child:
|
||||
raise HTTPException(status_code=404, detail="Issue not found")
|
||||
child.depends_on_id = None
|
||||
db.commit()
|
||||
return {"child_id": child_id, "status": "unlinked"}
|
||||
|
||||
|
||||
@app.get("/issues/{issue_id}/children", response_model=List[schemas.IssueResponse])
|
||||
def get_children(issue_id: int, db: Session = Depends(get_db)):
|
||||
return db.query(models.Issue).filter(models.Issue.depends_on_id == issue_id).all()
|
||||
|
||||
Reference in New Issue
Block a user