Allow searching builds by status
This commit is contained in:
parent
af7fb32a5e
commit
24fa4bebd1
3 changed files with 18 additions and 3 deletions
|
|
@ -85,10 +85,11 @@ async def builds(
|
|||
target_branch: Optional[str] = None,
|
||||
branch: Optional[str] = None,
|
||||
pr: Optional[int] = None,
|
||||
status: Optional[models.BuildStatus] = None,
|
||||
) -> list[models.Build]:
|
||||
return list(
|
||||
controller.db.search(
|
||||
repo=repo, target_branch=target_branch, branch=branch, pr=pr
|
||||
repo=repo, target_branch=target_branch, branch=branch, pr=pr, status=status
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class BuildsDb:
|
|||
commit_info = CommitInfo(**{k: row[k] for k in commit_info_fields})
|
||||
return Build(
|
||||
commit_info=commit_info,
|
||||
**{k: row[k] for k in row.keys() if k not in commit_info_fields}
|
||||
**{k: row[k] for k in row.keys() if k not in commit_info_fields},
|
||||
)
|
||||
|
||||
def reset(self) -> None:
|
||||
|
|
@ -224,11 +224,13 @@ class BuildsDb:
|
|||
|
||||
def search(
|
||||
self,
|
||||
*,
|
||||
repo: str | None = None,
|
||||
target_branch: str | None = None,
|
||||
branch: str | None = None,
|
||||
pr: int | None = None,
|
||||
name: str | None = None,
|
||||
status: BuildStatus | None = None,
|
||||
sort: SortOrder = SortOrder.desc,
|
||||
) -> Iterator[Build]:
|
||||
query = "SELECT * FROM builds "
|
||||
|
|
@ -250,6 +252,9 @@ class BuildsDb:
|
|||
if name:
|
||||
where.append("name=?")
|
||||
params.append(name)
|
||||
if status:
|
||||
where.append("status=?")
|
||||
params.append(status.value)
|
||||
if where:
|
||||
query += "WHERE " + " AND ".join(where)
|
||||
if sort == SortOrder.desc:
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ def test_search() -> None:
|
|||
db.add(build1 := _make_build(name="b1", repo="oca/repo1"))
|
||||
db.add(_make_build(name="b2", repo="oca/repo2"))
|
||||
assert len(list(db.search())) == 2
|
||||
assert list(db.search("oca/repo1")) == [build1]
|
||||
assert list(db.search(repo="oca/repo1")) == [build1]
|
||||
|
||||
|
||||
def test_search_by_branch_and_pr() -> None:
|
||||
|
|
@ -105,6 +105,15 @@ def test_search_by_branch_and_pr() -> None:
|
|||
assert list(db.search(pr=1)) == [build2]
|
||||
|
||||
|
||||
def test_search_by_status() -> None:
|
||||
db = BuildsDb()
|
||||
db.add(build1 := _make_build(name="b1", status=BuildStatus.failed))
|
||||
db.add(build2 := _make_build(name="b2", status=BuildStatus.started))
|
||||
assert list(db.search(status=BuildStatus.failed)) == [build1]
|
||||
assert list(db.search(status=BuildStatus.started)) == [build2]
|
||||
assert list(db.search(status=BuildStatus.stopped)) == []
|
||||
|
||||
|
||||
def test_search_sort() -> None:
|
||||
db = BuildsDb()
|
||||
db.add(build1 := _make_build(name="b1", target_branch="15.0", pr=None))
|
||||
|
|
|
|||
Loading…
Reference in a new issue