ALIAS points to LBL, not directly to value (!)

feat/vaults
Tomáš Mládek 2022-02-06 12:54:51 +01:00
parent 4822069fdf
commit 6b9e534270
No known key found for this signature in database
GPG Key ID: ED21612889E75EC5
1 changed files with 19 additions and 10 deletions

View File

@ -391,27 +391,29 @@ fn insert_file_with_metadata(
mtime, mtime,
}; };
let blob_address = Address::Hash(hash);
// Metadata // Metadata
let type_entry = Entry { let type_entry = Entry {
entity: Address::Hash(hash.clone()), entity: blob_address.clone(),
attribute: String::from(IS_OF_TYPE_ATTR), attribute: String::from(IS_OF_TYPE_ATTR),
value: EntryValue::Address(BLOB_TYPE_ADDR.clone()), value: EntryValue::Address(BLOB_TYPE_ADDR.clone()),
}; };
let size_entry = Entry { let size_entry = Entry {
entity: Address::Hash(hash.clone()), entity: blob_address.clone(),
attribute: FILE_SIZE_KEY.to_string(), attribute: FILE_SIZE_KEY.to_string(),
value: EntryValue::Number(size as f64), value: EntryValue::Number(size as f64),
}; };
let mime_entry = mime_type.map(|mime_type| Entry { let mime_entry = mime_type.map(|mime_type| Entry {
entity: Address::Hash(hash.clone()), entity: blob_address.clone(),
attribute: FILE_MIME_KEY.to_string(), attribute: FILE_MIME_KEY.to_string(),
value: EntryValue::String(mime_type), value: EntryValue::String(mime_type),
}); });
let added_entry = Entry { let added_entry = Entry {
entity: Address::Hash(hash.clone()), entity: blob_address.clone(),
attribute: "ADDED".to_string(), attribute: "ADDED".to_string(),
value: EntryValue::Number( value: EntryValue::Number(
SystemTime::now() SystemTime::now()
@ -454,18 +456,25 @@ fn insert_file_with_metadata(
let dir_has_entry = Entry { let dir_has_entry = Entry {
entity: parent_dir.clone(), entity: parent_dir.clone(),
attribute: HIER_HAS_ATTR.to_string(), attribute: HIER_HAS_ATTR.to_string(),
value: EntryValue::Address(Address::Hash(hash.clone())), value: EntryValue::Address(blob_address.clone()),
}; };
let dir_has_entry_addr = connection.insert_entry(dir_has_entry)?; let dir_has_entry_addr = connection.insert_entry(dir_has_entry)?;
let name_entry = Entry { let label_entry = Entry {
entity: dir_has_entry_addr, entity: blob_address.clone(),
attribute: ALIAS_KEY.to_string(), attribute: LABEL_ATTR.to_string(),
value: EntryValue::String(filename.as_os_str().to_string_lossy().to_string()), value: EntryValue::String(filename.as_os_str().to_string_lossy().to_string()),
}; };
connection.insert_entry(name_entry)?; let label_entry_addr = connection.insert_entry(label_entry)?;
Ok(Address::Hash(hash.clone())) let alias_entry = Entry {
entity: dir_has_entry_addr,
attribute: ALIAS_KEY.to_string(),
value: EntryValue::Address(label_entry_addr),
};
connection.insert_entry(alias_entry)?;
Ok(blob_address)
}) })
} }