Me neither. It is more complicated and decreases performance - but waiting for @DavidMtl and @Traktion 's opinions.
So should this not discourage us from providing dir-versioning ? File versioning can be interpreted only in one way while for dir there seems to be divergence.
Can you give a modification of types if we were to go the dir-versioning way ?
Quick modification of the structure in O.P link would look like this:
/// `StructuredData::data(encrypted(serialised(DirListing)));`
/// where:
// =================================
enum DirListing {
Versioned(Vec<Dir>),
Unversioned(Dir),
}
struct Dir {
sub_dirs: Vec<DirMetadata>,
files: Vec<FileMetadata>,
}
// =================================
// If shared ppl can update this independently of each other, attaching it to any existing tree they have.
struct DirMetadata {
locator: DataIdentifier, // DataIdentifier::Structured(UNVERSIONED_SD_TYPE_TAG, XorName)
encrypt_key: Option<secretbox::Key>,
name: String,
created: Time,
modified: Time,
user_metadata: Vec<u8>,
}
// =================================
struct FileMetadata {
name: String,
size: u64,
created: Time,
modified: Time,
user_metadata: Vec<u8>,
data_map: DataMap,
}
You can take it from there ^^^ if you want.