ReviewDecision domain model

This commit is contained in:
2026-04-26 00:24:02 +02:00
parent 5aa76af78c
commit 29e855e5b3
7 changed files with 130 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ from repo_registry.core.models import (
Repository,
RepositoryAbilityMap,
RepositorySnapshot,
ReviewDecision,
SearchResult,
SourceReference,
)
@@ -929,6 +930,40 @@ class RegistryStore:
)
return int(cursor.lastrowid)
def list_review_decisions(
self,
repository_id: int,
analysis_run_id: int | None = None,
) -> list[ReviewDecision]:
self.get_repository(repository_id)
params: tuple[int, ...]
where = "WHERE repository_id = ?"
params = (repository_id,)
if analysis_run_id is not None:
where += " AND analysis_run_id = ?"
params = (repository_id, analysis_run_id)
with self.connect() as connection:
rows = connection.execute(
f"""
SELECT id, repository_id, analysis_run_id, action, notes, created_at
FROM review_decisions
{where}
ORDER BY created_at DESC, id DESC
""",
params,
).fetchall()
return [
ReviewDecision(
id=row["id"],
repository_id=row["repository_id"],
analysis_run_id=row["analysis_run_id"],
action=row["action"],
notes=row["notes"],
created_at=row["created_at"],
)
for row in rows
]
def fail_analysis_run(
self,
repository_id: int,