///|
pub type ValidationReportId = String
///|
pub(all) struct ValidationFinding {
rule_id : String
severity : FindingSeverity
artifact : ArtifactRef
message : String
recommendation : String
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct ValidationReport {
validation_report_id : ValidationReportId
root : String
generated_at_ms : Int64
status : ValidationStatus
findings : Array[ValidationFinding]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub fn validation_finding(
rule_id : String,
severity : FindingSeverity,
artifact : ArtifactRef,
message : String,
recommendation? : String = "",
) -> ValidationFinding {
{ rule_id, severity, artifact, message, recommendation }
}
///|
pub fn validation_report(
validation_report_id : ValidationReportId,
root : String,
generated_at_ms : Int64,
status : ValidationStatus,
findings? : Array[ValidationFinding] = [],
) -> ValidationReport {
{ validation_report_id, root, generated_at_ms, status, findings }
}
///|
pub fn validation_finding_count(report : ValidationReport) -> Int {
report.findings.length()
}
///|
pub fn validation_blocker_count(report : ValidationReport) -> Int {
let mut count = 0
for finding in report.findings {
if finding.severity == Blocker {
count += 1
}
}
count
}