aboutsummaryrefslogtreecommitdiff
path: root/database/src/kv/index.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-08 01:18:59 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-08 01:18:59 +0100
commit2ea9c54d755d808a8030602d667979e270381933 (patch)
tree00deebad391259ff607042fbdb69e5743421684a /database/src/kv/index.rs
parente3d5e9d29a558173d5e6c499695480bed83008be (diff)
downloadjellything-2ea9c54d755d808a8030602d667979e270381933.tar
jellything-2ea9c54d755d808a8030602d667979e270381933.tar.bz2
jellything-2ea9c54d755d808a8030602d667979e270381933.tar.zst
list index; generalize counters; count and none index
Diffstat (limited to 'database/src/kv/index.rs')
-rw-r--r--database/src/kv/index.rs27
1 files changed, 23 insertions, 4 deletions
diff --git a/database/src/kv/index.rs b/database/src/kv/index.rs
index 09242c4..27aabd6 100644
--- a/database/src/kv/index.rs
+++ b/database/src/kv/index.rs
@@ -24,11 +24,30 @@ pub fn update_index(
ob: Object<'_>,
remove: bool,
) -> Result<()> {
- let mut k = vec![vec![]];
- ik.0.apply(ob, &mut k);
+ let mut ks = vec![is.to_be_bytes().to_vec()];
+ ik.0.apply(ob, &mut ks);
match ik.1 {
- SortKey::None => {}
- SortKey::Count => {}
+ SortKey::None => {
+ for mut k in ks {
+ k.extend(row.to_be_bytes());
+ if remove {
+ txn.del(&k)?;
+ } else {
+ txn.set(&k, &[])?;
+ }
+ }
+ }
+ SortKey::Count => {
+ for k in ks {
+ let mut c = read_counter(txn, &k, 0)?;
+ if remove {
+ c -= 1;
+ } else {
+ c += 1;
+ }
+ write_counter(txn, &k, c)?;
+ }
+ }
SortKey::Value(path, multi_behaviour) => {}
SortKey::Text(path) => {}
}