use std::collections::BTreeSet;
use std::fmt::Debug;
use std::hash::Hash;
use chrono::{DateTime, Utc};
use serde::de::DeserializeOwned;
use serde::Serialize;
use crate::db::entry::Entry;
use crate::types::HashMap;
#[derive(Debug, Clone)]
pub(crate) struct State<T>
where
T: Serialize + DeserializeOwned + Debug + Eq + PartialEq + Hash + Send + Sync + Clone,
{
pub(crate) entries: HashMap<String, Entry<T>>,
pub(crate) expirations: BTreeSet<(DateTime<Utc>, String)>,
}
impl<T> State<T>
where
T: Serialize + DeserializeOwned + Debug + Eq + PartialEq + Hash + Send + Sync + Clone,
{
pub(crate) fn new() -> Self
{
Self {
entries: HashMap::default(),
expirations: BTreeSet::new(),
}
}
}