use notedthat_core::{EventPublisher, EventSource};
use notedthat_indexer::{IndexHealth, IndexQueueSender};
#[derive(Clone)]
pub struct WriteSinks<'a> {
pub indexer_tx: IndexQueueSender,
pub events: Option<&'a dyn EventPublisher>,
pub index_health: Option<&'a IndexHealth>,
pub source: EventSource,
}
impl<'a> WriteSinks<'a> {
#[must_use]
pub fn new(
indexer_tx: &'a IndexQueueSender,
events: Option<&'a dyn EventPublisher>,
index_health: &'a IndexHealth,
source: EventSource,
) -> Self {
Self {
indexer_tx: indexer_tx.clone(),
events,
index_health: Some(index_health),
source,
}
}
#[must_use]
pub fn indexer_only(indexer_tx: impl Into<IndexQueueSender>) -> Self {
Self {
indexer_tx: indexer_tx.into(),
events: None,
index_health: None,
source: EventSource::Http,
}
}
}