Skip to main content

indexlake_storage_s3/
lib.rs

1mod 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}