WebDAV additional fixes: dead props compaction + accessed metadata
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

- save_props/patch_props: filter empty entries before persisting
- VfsDavMetaData: add accessed field + accessed() method

Tests: 288 passed, 0 failed
This commit is contained in:
Warren
2026-06-21 16:45:03 +08:00
parent ab11983c1b
commit 43c135e877

View File

@@ -127,6 +127,7 @@ impl VfsDavFs {
};
let entries: HashMap<String, Vec<DeadPropEntry>> = data
.iter()
.filter(|(_, v)| !v.is_empty())
.map(|(k, v)| (k.clone(), v.iter().map(DeadPropEntry::from).collect()))
.collect();
if let Ok(json) = serde_json::to_string(&entries) {
@@ -229,14 +230,17 @@ pub struct VfsDavMetaData {
len: u64,
is_dir: bool,
modified: SystemTime,
accessed: SystemTime,
}
impl VfsDavMetaData {
pub fn new(len: u64, is_dir: bool) -> Self {
let now = SystemTime::now();
Self {
len,
is_dir,
modified: SystemTime::now(),
modified: now,
accessed: now,
}
}
@@ -245,6 +249,7 @@ impl VfsDavMetaData {
len: stat.size,
is_dir: stat.is_dir,
modified: stat.mtime,
accessed: stat.atime,
}
}
}
@@ -261,6 +266,10 @@ impl DavMetaData for VfsDavMetaData {
fn is_dir(&self) -> bool {
self.is_dir
}
fn accessed(&self) -> Result<SystemTime, FsError> {
Ok(self.accessed)
}
}
#[derive(Debug, Clone)]
@@ -814,6 +823,7 @@ impl DavFileSystem for VfsDavFs {
}
};
map.iter()
.filter(|(_, v)| !v.is_empty())
.map(|(k, v)| (k.clone(), v.iter().map(DeadPropEntry::from).collect()))
.collect()
};