indexlake_storage_s3/
lib.rs1mod file;
2mod storage;
3
4pub use file::*;
5pub use opendal::services::S3Config;
6pub use storage::*;
7
8use indexlake::{
9 ILError, ILResult,
10 storage::{EntryMode, FileMetadata},
11};
12
13pub(crate) fn parse_opendal_metadata(metadata: &opendal::Metadata) -> ILResult<FileMetadata> {
14 Ok(FileMetadata {
15 size: metadata.content_length(),
16 mode: parse_opendal_entry_mode(metadata.mode())?,
17 last_modified: metadata.last_modified().map(|dt| dt.timestamp_millis()),
18 })
19}
20
21pub(crate) fn parse_opendal_entry_mode(mode: opendal::EntryMode) -> ILResult<EntryMode> {
22 match mode {
23 opendal::EntryMode::DIR => Ok(EntryMode::Directory),
24 opendal::EntryMode::FILE => Ok(EntryMode::File),
25 opendal::EntryMode::Unknown => {
26 Err(ILError::storage("Unrecognized opendal entry mode: {mode}"))
27 }
28 }
29}