Skip to main content

indexlake_storage_fs/
lib.rs

1mod file;
2mod storage;
3
4pub use file::*;
5pub use storage::*;
6
7use indexlake::storage::{EntryMode, FileMetadata};
8use std::time::UNIX_EPOCH;
9
10pub(crate) fn parse_std_fs_metadata(metadata: &std::fs::Metadata) -> FileMetadata {
11    let size = metadata.len();
12    let last_modified = if let Ok(modified) = metadata.modified() {
13        Some(
14            modified
15                .duration_since(UNIX_EPOCH)
16                .expect("Time went backwards")
17                .as_millis() as i64,
18        )
19    } else {
20        None
21    };
22    let mode = if metadata.is_dir() {
23        EntryMode::Directory
24    } else if metadata.is_file() {
25        EntryMode::File
26    } else {
27        EntryMode::Unknown
28    };
29    FileMetadata {
30        size,
31        last_modified,
32        mode,
33    }
34}