use crate::contracts::view::{ContractClaim, ContractConflict};
use saya_types::{ClaimId, ClaimStatus};
pub(crate) fn conflicts_for(claims: &[ContractClaim]) -> Vec<ContractConflict> {
let grains: Vec<ClaimId> = claims
.iter()
.filter(|c| c.status == ClaimStatus::Confirmed && kind_is(c, "table_grain"))
.map(|c| c.id.clone())
.collect();
if grains.len() > 1 {
vec![ContractConflict {
kind: "table_grain",
claim_ids: grains,
}]
} else {
Vec::new()
}
}
fn kind_is(claim: &ContractClaim, expected: &str) -> bool {
claim.value.kind() == expected
}