use crate::entity::Entity;
use ankurah_proto::{self as proto, Attested, Event};
#[derive(Debug, Clone, PartialEq)]
pub enum MembershipChange {
Initial,
Add,
Remove,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ReactorUpdate<E = Entity, Ev = Attested<Event>> {
pub items: Vec<ReactorUpdateItem<E, Ev>>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ReactorUpdateItem<E = Entity, Ev = Attested<Event>> {
pub entity: E,
pub events: Vec<Ev>,
pub predicate_relevance: Vec<(proto::QueryId, MembershipChange)>,
}
impl<E, Ev: Clone> ReactorUpdateItem<E, Ev> {
pub fn has_membership_change(&self) -> bool { !self.predicate_relevance.is_empty() }
}