#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct MemorySources {
pub owner: Option<String>,
pub participants: Vec<String>,
}
impl MemorySources {
#[must_use]
pub fn partitions(&self) -> Vec<String> {
let mut ids: Vec<String> = self
.owner
.iter()
.cloned()
.chain(self.participants.iter().cloned())
.collect();
ids.sort();
ids.dedup();
ids
}
}
#[derive(Clone, PartialEq, Eq)]
pub enum QueryScope {
Fleet,
Conversations {
conversations: Vec<String>,
memory: MemorySources,
},
FleetConversation {
conversation: String,
},
}
impl std::fmt::Debug for QueryScope {
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Fleet => formatter.write_str("Fleet"),
Self::Conversations {
conversations,
memory,
} => formatter
.debug_struct("Conversations")
.field("count", &conversations.len())
.field("memory_has_owner", &memory.owner.is_some())
.field("memory_participant_count", &memory.participants.len())
.finish(),
Self::FleetConversation { .. } => formatter
.debug_struct("FleetConversation")
.field("count", &1_usize)
.finish(),
}
}
}