use notedthat_core::{EventPublisher, EventSource};
use notedthat_indexer::{IndexEvent, IndexHealth};
use tokio::sync::mpsc::Sender;
#[derive(Clone, Copy)]
pub struct WriteSinks<'a> {
pub indexer_tx: &'a Sender<IndexEvent>,
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 Sender<IndexEvent>,
events: Option<&'a dyn EventPublisher>,
index_health: &'a IndexHealth,
source: EventSource,
) -> Self {
Self {
indexer_tx,
events,
index_health: Some(index_health),
source,
}
}
#[must_use]
pub fn indexer_only(indexer_tx: &'a Sender<IndexEvent>) -> Self {
Self {
indexer_tx,
events: None,
index_health: None,
source: EventSource::Http,
}
}
}