#[cfg(feature = "ttl")]
use std::time::Duration;
use crate::Emdb;
#[derive(Debug, Clone, Default)]
pub struct EmdbBuilder {
#[cfg(feature = "ttl")]
pub(crate) default_ttl: Option<Duration>,
}
impl EmdbBuilder {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[cfg(feature = "ttl")]
#[must_use]
pub fn default_ttl(mut self, ttl: Duration) -> Self {
self.default_ttl = Some(ttl);
self
}
#[must_use]
pub fn build(self) -> Emdb {
Emdb::from_builder(self)
}
}
#[cfg(test)]
mod tests {
use super::EmdbBuilder;
#[test]
fn test_build_returns_empty_database() {
let db = EmdbBuilder::new().build();
assert!(db.is_empty());
}
#[test]
fn test_default_builder_builds_database() {
let db = EmdbBuilder::default().build();
assert_eq!(db.len(), 0);
}
#[cfg(feature = "ttl")]
#[test]
fn test_default_ttl_builder_method_is_usable() {
use std::time::Duration;
let db = EmdbBuilder::new()
.default_ttl(Duration::from_secs(1))
.build();
assert!(db.is_empty());
}
}