feat(task-018): add observability retry cancel and audit trail
This commit is contained in:
@@ -6,6 +6,8 @@ from uuid import NAMESPACE_URL, UUID, uuid5
|
||||
|
||||
from src.domain.contracts import (
|
||||
CurrentUser,
|
||||
ScriptConfigVersionAuditEventListResponse,
|
||||
ScriptConfigVersionAuditEventSummary,
|
||||
ScriptConfigVersionCreateRequest,
|
||||
ScriptConfigVersionResponse,
|
||||
ScriptConfigVersionStatus,
|
||||
@@ -231,6 +233,49 @@ def list_script_config_versions(
|
||||
return [_script_version_summary(row) for row in rows]
|
||||
|
||||
|
||||
def list_script_config_audit_events(
|
||||
repository: object,
|
||||
site_id: UUID,
|
||||
) -> ScriptConfigVersionAuditEventListResponse:
|
||||
repository.target_sites.get_by_id(site_id)
|
||||
version_rows = repository.script_config_versions.list_for_site(site_id)
|
||||
version_by_id = {str(row["id"]): row for row in version_rows}
|
||||
events = repository.script_config_version_events.list_for_site(site_id)
|
||||
|
||||
summaries: list[ScriptConfigVersionAuditEventSummary] = []
|
||||
for event in events:
|
||||
version_row = version_by_id.get(str(event["version_id"]))
|
||||
payload = event["payload"] if isinstance(event["payload"], dict) else {}
|
||||
summaries.append(
|
||||
ScriptConfigVersionAuditEventSummary(
|
||||
id=event["id"],
|
||||
target_site_id=event["target_site_id"],
|
||||
version_id=event["version_id"],
|
||||
event_type=event["event_type"],
|
||||
actor_user_id=event["actor_user_id"],
|
||||
payload=payload,
|
||||
created_at=event["created_at"],
|
||||
version=(
|
||||
int(version_row["version"])
|
||||
if version_row is not None and version_row.get("version") is not None
|
||||
else None
|
||||
),
|
||||
diff=(
|
||||
version_row["diff"]
|
||||
if version_row is not None and isinstance(version_row.get("diff"), dict)
|
||||
else {}
|
||||
),
|
||||
rollback_target_version_id=(
|
||||
version_row["rollback_target_version_id"]
|
||||
if version_row is not None
|
||||
else None
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
return ScriptConfigVersionAuditEventListResponse(events=summaries)
|
||||
|
||||
|
||||
def _script_version_summary(row: dict[str, object]) -> ScriptConfigVersionSummary:
|
||||
return ScriptConfigVersionSummary(
|
||||
id=row["id"],
|
||||
|
||||
Reference in New Issue
Block a user