use crate::storage::FlashMessageStore;
use crate::Level;
use std::sync::Arc;
#[derive(Clone)]
pub struct FlashMessagesFramework {
pub(crate) minimum_level: Level,
pub(crate) storage_backend: Arc<dyn FlashMessageStore>,
}
impl FlashMessagesFramework {
pub fn builder<S: FlashMessageStore + 'static>(
storage_backend: S,
) -> FlashMessagesFrameworkBuilder {
FlashMessagesFrameworkBuilder {
minimum_level: None,
storage_backend: Arc::new(storage_backend),
}
}
}
pub struct FlashMessagesFrameworkBuilder {
pub(crate) minimum_level: Option<Level>,
pub(crate) storage_backend: Arc<dyn FlashMessageStore>,
}
impl FlashMessagesFrameworkBuilder {
pub fn minimum_level(mut self, minimum_level: Level) -> Self {
self.minimum_level = Some(minimum_level);
self
}
pub fn build(self) -> FlashMessagesFramework {
FlashMessagesFramework {
minimum_level: self.minimum_level.unwrap_or(Level::Info),
storage_backend: self.storage_backend,
}
}
}