use async_trait::async_trait;
use nisshi_storage::{
ArcDynStorage, Result, StorageFactory, StorageFactoryConfiguration, reject_unrecognized_options,
};
use regex::Regex;
use super::Engine;
#[derive(Clone, Copy, Debug)]
pub struct LiteFactory;
#[async_trait]
impl StorageFactory for LiteFactory {
fn scheme(&self) -> Result<Regex> {
Regex::new(r"sqlite").map_err(Into::into)
}
async fn build(&self, configuration: StorageFactoryConfiguration) -> Result<ArcDynStorage> {
reject_unrecognized_options(
&configuration.storage,
&["vacuum_into", "busy_timeout", "compaction", "mode"],
)?;
Engine::builder()
.storage(configuration.storage)
.node(configuration.node_id)
.cluster(configuration.cluster)
.advertised_listener(configuration.advertised_listener)
.schemas(configuration.schema_registry)
.lake(configuration.lake_house)
.cancellation(configuration.cancellation)
.build()
.await
}
}