#![forbid(unsafe_code)]
#![warn(missing_docs)]
#![warn(rustdoc::bare_urls)]
use openmls_traits::storage::StorageProvider;
pub mod groups;
pub mod messages;
pub mod welcomes;
pub mod test_utils;
use self::groups::GroupStorage;
use self::messages::MessageStorage;
use self::welcomes::WelcomeStorage;
const CURRENT_VERSION: u16 = 1;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Backend {
Memory,
SQLite,
}
impl Backend {
pub fn is_persistent(&self) -> bool {
!matches!(self, Self::Memory)
}
}
pub trait NostrMlsStorageProvider: GroupStorage + MessageStorage + WelcomeStorage {
type OpenMlsStorageProvider: StorageProvider<CURRENT_VERSION>;
fn backend(&self) -> Backend;
fn openmls_storage(&self) -> &Self::OpenMlsStorageProvider;
fn openmls_storage_mut(&mut self) -> &mut Self::OpenMlsStorageProvider;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_backend_is_persistent() {
assert!(!Backend::Memory.is_persistent());
assert!(Backend::SQLite.is_persistent());
}
}