Insert a new entry. If the primary key already exists, updates its sort key. Returns `true` if this was a new insert, `false` if it was an update.
(&mut self, sort_key: Vec<u8>, primary_key: Vec<u8>)
| 68 | /// |
| 69 | /// Returns `true` if this was a new insert, `false` if it was an update. |
| 70 | pub fn insert(&mut self, sort_key: Vec<u8>, primary_key: Vec<u8>) -> bool { |
| 71 | // If primary key already exists with a different sort key, remove first. |
| 72 | if let Some(old_sort) = self.key_to_sort.get(&primary_key) { |
| 73 | if *old_sort == sort_key { |
| 74 | return false; // Same sort key, nothing to do. |
| 75 | } |
| 76 | let old_sort = old_sort.clone(); |
| 77 | self.remove_by_composite(&old_sort, &primary_key); |
| 78 | } |
| 79 | |
| 80 | self.key_to_sort |
| 81 | .insert(primary_key.clone(), sort_key.clone()); |
| 82 | let new_root = self.avl_insert(self.root, sort_key, primary_key); |
| 83 | self.root = new_root; |
| 84 | true |
| 85 | } |
| 86 | |
| 87 | /// Remove an entry by primary key. Returns `true` if found and removed. |
| 88 | pub fn remove(&mut self, primary_key: &[u8]) -> bool { |