diff --git a/src/db_service.rs b/src/db_service.rs index 8f16d2a..08f1bd8 100644 --- a/src/db_service.rs +++ b/src/db_service.rs @@ -901,6 +901,24 @@ pub fn entry_key_value_fields(db_key: &str, entry_uuid: &Uuid) -> Result Result> { + main_content_action!(db_key, move |k: &KeepassFile| { + let mut keys: std::collections::HashSet = std::collections::HashSet::new(); + for (_, entry) in k.root.all_entries().iter() { + for item in entry.custom_data.get_items() { + keys.insert(item.key.clone()); + } + } + Ok(keys.into_iter().collect()) + }) +} + +pub fn all_entry_uuids(db_key: &str) -> Result> { + main_content_action!(db_key, move |k: &KeepassFile| { + Ok(k.root.all_entries().keys().copied().collect()) + }) +} + pub fn history_entry_by_index( db_key: &str, entry_uuid: &Uuid, diff --git a/src/form_data/entry.rs b/src/form_data/entry.rs index 1d325f3..0294e4d 100644 --- a/src/form_data/entry.rs +++ b/src/form_data/entry.rs @@ -226,6 +226,10 @@ pub struct EntryFormData { } impl EntryFormData { + pub fn entry_uuid(&self) -> Uuid { + self.uuid + } + // Sets the entry title. Used when building form data programmatically within the core. pub(crate) fn set_title(&mut self, title: String) { self.title = title;