use std::collections::HashMap;
use std::sync::Arc;
use lance::Dataset;
use lance::dataset::builder::DatasetBuilder;
use lance::io::{ObjectStoreParams, StorageOptionsAccessor};
pub type StorageOptions = HashMap<String, String>;
pub(crate) fn store_params(options: &StorageOptions) -> Option<ObjectStoreParams> {
if options.is_empty() {
return None;
}
Some(ObjectStoreParams {
storage_options_accessor: Some(Arc::new(StorageOptionsAccessor::with_static_options(
options.clone(),
))),
..Default::default()
})
}
pub(crate) async fn open_dataset(uri: &str, options: &StorageOptions) -> lance::Result<Dataset> {
DatasetBuilder::from_uri(uri)
.with_storage_options(options.clone())
.load()
.await
}