feat: issue search API (keyword in title/description)
This commit is contained in:
20
app/main.py
20
app/main.py
@@ -439,3 +439,23 @@ def transition_issue(issue_id: int, new_status: str, bg: BackgroundTasks, db: Se
|
|||||||
}, issue.project_id, db)
|
}, issue.project_id, db)
|
||||||
|
|
||||||
return issue
|
return issue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ============ Search API ============
|
||||||
|
|
||||||
|
@app.get("/search/issues", response_model=List[schemas.IssueResponse])
|
||||||
|
def search_issues(
|
||||||
|
q: str,
|
||||||
|
project_id: int = None,
|
||||||
|
skip: int = 0,
|
||||||
|
limit: int = 50,
|
||||||
|
db: Session = Depends(get_db)
|
||||||
|
):
|
||||||
|
"""Search issues by title or description keyword."""
|
||||||
|
query = db.query(models.Issue).filter(
|
||||||
|
(models.Issue.title.contains(q)) | (models.Issue.description.contains(q))
|
||||||
|
)
|
||||||
|
if project_id:
|
||||||
|
query = query.filter(models.Issue.project_id == project_id)
|
||||||
|
return query.offset(skip).limit(limit).all()
|
||||||
|
|||||||
Reference in New Issue
Block a user