mod store;
pub use store::OpendalStore;
mod utils;
#[cfg(feature = "services-s3")]
mod amazon_s3;
mod service;
pub use service::{ObjectStoreBuilder, ObjectStoreService};
#[cfg(all(feature = "send_wrapper", test))]
mod assert_send {
use object_store::{ObjectStore, ObjectStoreExt, PutPayload};
use opendal::Operator;
#[allow(dead_code)]
fn assert_send<T: Send>(_: T) {}
#[allow(dead_code)]
fn assertion() {
let op = Operator::new(opendal::services::Memory::default())
.unwrap()
.finish();
let store = super::OpendalStore::new(op);
assert_send(store.put(&"test".into(), PutPayload::new()));
assert_send(store.get(&"test".into()));
assert_send(store.get_range(&"test".into(), 0..1));
assert_send(store.head(&"test".into()));
assert_send(store.delete(&"test".into()));
assert_send(store.list(None));
assert_send(store.list_with_offset(None, &"test".into()));
assert_send(store.list_with_delimiter(None));
}
}
fn timestamp_to_datetime(ts: opendal::raw::Timestamp) -> Option<chrono::DateTime<chrono::Utc>> {
let jiff_ts = ts.into_inner();
chrono::DateTime::<chrono::Utc>::from_timestamp(
jiff_ts.as_second(),
jiff_ts.subsec_nanosecond() as u32,
)
}
fn datetime_to_timestamp(dt: chrono::DateTime<chrono::Utc>) -> Option<opendal::raw::Timestamp> {
opendal::raw::Timestamp::new(dt.timestamp(), dt.timestamp_subsec_nanos() as i32).ok()
}