use crate::meta_storage::mem::MemMetaStorageOptions;
use crate::meta_storage::psql::PsqlMetaStorageOptions;
use crate::meta_storage::{AnyBackend, AnyBackendError, MetaStorageError};
#[non_exhaustive]
#[derive(Debug)]
pub enum MetaBackendOptions {
Psql(PsqlMetaStorageOptions),
Mem(MemMetaStorageOptions),
}
impl MetaBackendOptions {
pub fn psql(uri: impl Into<String>) -> Self {
MetaBackendOptions::Psql(PsqlMetaStorageOptions::new(uri))
}
pub fn mem() -> Self {
MetaBackendOptions::Mem(MemMetaStorageOptions::new())
}
pub fn build(self) -> Result<AnyBackend, MetaStorageError<AnyBackendError>> {
match self {
MetaBackendOptions::Psql(options) => Ok(AnyBackend::Psql(options.build()?)),
MetaBackendOptions::Mem(options) => Ok(AnyBackend::Mem(options.build())),
}
}
}
impl From<PsqlMetaStorageOptions> for MetaBackendOptions {
fn from(options: PsqlMetaStorageOptions) -> Self {
MetaBackendOptions::Psql(options)
}
}
impl From<MemMetaStorageOptions> for MetaBackendOptions {
fn from(options: MemMetaStorageOptions) -> Self {
MetaBackendOptions::Mem(options)
}
}