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,
|
target_branch: Optional[str] = None,
|
||||||
branch: Optional[str] = None,
|
branch: Optional[str] = None,
|
||||||
pr: Optional[int] = None,
|
pr: Optional[int] = None,
|
||||||
|
status: Optional[models.BuildStatus] = None,
|
||||||
) -> list[models.Build]:
|
) -> list[models.Build]:
|
||||||
return list(
|
return list(
|
||||||
controller.db.search(
|
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})
|
commit_info = CommitInfo(**{k: row[k] for k in commit_info_fields})
|
||||||
return Build(
|
return Build(
|
||||||
commit_info=commit_info,
|
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:
|
def reset(self) -> None:
|
||||||
|
|
@ -224,11 +224,13 @@ class BuildsDb:
|
||||||
|
|
||||||
def search(
|
def search(
|
||||||
self,
|
self,
|
||||||
|
*,
|
||||||
repo: str | None = None,
|
repo: str | None = None,
|
||||||
target_branch: str | None = None,
|
target_branch: str | None = None,
|
||||||
branch: str | None = None,
|
branch: str | None = None,
|
||||||
pr: int | None = None,
|
pr: int | None = None,
|
||||||
name: str | None = None,
|
name: str | None = None,
|
||||||
|
status: BuildStatus | None = None,
|
||||||
sort: SortOrder = SortOrder.desc,
|
sort: SortOrder = SortOrder.desc,
|
||||||
) -> Iterator[Build]:
|
) -> Iterator[Build]:
|
||||||
query = "SELECT * FROM builds "
|
query = "SELECT * FROM builds "
|
||||||
|
|
@ -250,6 +252,9 @@ class BuildsDb:
|
||||||
if name:
|
if name:
|
||||||
where.append("name=?")
|
where.append("name=?")
|
||||||
params.append(name)
|
params.append(name)
|
||||||
|
if status:
|
||||||
|
where.append("status=?")
|
||||||
|
params.append(status.value)
|
||||||
if where:
|
if where:
|
||||||
query += "WHERE " + " AND ".join(where)
|
query += "WHERE " + " AND ".join(where)
|
||||||
if sort == SortOrder.desc:
|
if sort == SortOrder.desc:
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ def test_search() -> None:
|
||||||
db.add(build1 := _make_build(name="b1", repo="oca/repo1"))
|
db.add(build1 := _make_build(name="b1", repo="oca/repo1"))
|
||||||
db.add(_make_build(name="b2", repo="oca/repo2"))
|
db.add(_make_build(name="b2", repo="oca/repo2"))
|
||||||
assert len(list(db.search())) == 2
|
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:
|
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]
|
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:
|
def test_search_sort() -> None:
|
||||||
db = BuildsDb()
|
db = BuildsDb()
|
||||||
db.add(build1 := _make_build(name="b1", target_branch="15.0", pr=None))
|
db.add(build1 := _make_build(name="b1", target_branch="15.0", pr=None))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue