diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-08 01:18:59 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-08 01:18:59 +0100 |
| commit | 2ea9c54d755d808a8030602d667979e270381933 (patch) | |
| tree | 00deebad391259ff607042fbdb69e5743421684a /database/src/kv/index.rs | |
| parent | e3d5e9d29a558173d5e6c499695480bed83008be (diff) | |
| download | jellything-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.rs | 27 |
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) => {} } |