forked from kent/consciousness
store: convert more callers to use RELS index
Convert remaining Vec users to index-based access: - memory.rs: MemoryNode::from_store uses Store::neighbors() - graph.rs: orphan detection uses for_each_relation - local.rs: normalize_strengths uses for_each_relation + set_link_strength Add Store::neighbors() method and index::get_offsets_for_uuid(). Cleanup: - for_each_relation: build both uuid↔key maps in one pass - cap_degree: consolidate key/uuid/degree collection Remaining Vec uses: admin.rs (fsck, dedup), capnp.rs (load path). Co-Authored-By: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
5fe51fbfda
commit
5832e57970
8 changed files with 109 additions and 81 deletions
|
|
@ -99,6 +99,19 @@ pub fn get_uuid_for_key(db: &Database, key: &str) -> Result<Option<[u8; 16]>> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Get all offsets for a UUID (all versions). Returns newest first.
|
||||
pub fn get_offsets_for_uuid(db: &Database, uuid: &[u8; 16]) -> Result<Vec<u64>> {
|
||||
let txn = db.begin_read()?;
|
||||
let table = txn.open_multimap_table(UUID_OFFSETS)?;
|
||||
let mut offsets = Vec::new();
|
||||
for entry in table.get(uuid.as_slice())? {
|
||||
offsets.push(entry?.value());
|
||||
}
|
||||
// Sort descending so newest (highest offset) is first
|
||||
offsets.sort_by(|a, b| b.cmp(a));
|
||||
Ok(offsets)
|
||||
}
|
||||
|
||||
/// Remove a node from the index (key mappings only; UUID history preserved).
|
||||
pub fn remove_node(db: &Database, key: &str, _uuid: &[u8; 16]) -> Result<()> {
|
||||
let txn = db.begin_write()?;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue