use {super::SyncConfig, crate::tickets::TicketValidator, std::sync::Arc};
#[derive(Clone, Default)]
pub struct CollectionConfig {
pub(crate) sync: SyncConfig,
pub(crate) auth: Vec<Arc<dyn TicketValidator>>,
}
impl CollectionConfig {
#[must_use]
pub const fn with_sync(mut self, sync: SyncConfig) -> Self {
self.sync = sync;
self
}
#[must_use]
pub fn require_ticket(mut self, validator: impl TicketValidator) -> Self {
self.auth.push(Arc::new(validator));
self
}
}
impl From<SyncConfig> for CollectionConfig {
fn from(sync: SyncConfig) -> Self {
Self {
sync,
..Default::default()
}
}
}