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