WebDAV additional fixes: dead props compaction + accessed metadata
- 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:
@@ -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()
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user