aboutsummaryrefslogtreecommitdiff
path: root/database/src/kv/counters.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/kv/counters.rs')
-rw-r--r--database/src/kv/counters.rs29
1 files changed, 2 insertions, 27 deletions
diff --git a/database/src/kv/counters.rs b/database/src/kv/counters.rs
index bcbe6a0..c5fd5f9 100644
--- a/database/src/kv/counters.rs
+++ b/database/src/kv/counters.rs
@@ -4,8 +4,8 @@
Copyright (C) 2026 metamuffin <metamuffin.org>
*/
use crate::{
- Query, RowNum,
- kv::{SubtreeNum, binning::Binning},
+ Query,
+ kv::{SubtreeNum, binning::Binning, helpers::read_counter},
};
use anyhow::Result;
use jellyobject::Object;
@@ -19,20 +19,6 @@ impl Counters {
ob: Object<'_>,
remove: bool,
) -> Result<()> {
- for (b, &table) in &self.0 {
- let mut k = vec![vec![]];
- b.apply(ob, &mut k);
- if k.is_empty() {
- continue;
- }
- let mut counter = read_counter(txn, table, 0)?;
- if remove {
- counter += k.len() as u64;
- } else {
- counter -= k.len() as u64;
- }
- write_counter(txn, table, counter)?;
- }
Ok(())
}
pub fn count(&self, txn: &dyn jellykv::Transaction, query: &Query) -> Result<Option<u64>> {
@@ -46,14 +32,3 @@ impl Counters {
Ok(Some(total))
}
}
-
-pub fn write_counter(txn: &mut dyn jellykv::Transaction, t: SubtreeNum, value: u64) -> Result<()> {
- txn.set(&t.to_be_bytes(), &value.to_be_bytes())
-}
-pub fn read_counter(txn: &dyn jellykv::Transaction, t: SubtreeNum, default: u64) -> Result<u64> {
- Ok(txn
- .get(&t.to_be_bytes())?
- .map(|k| k.as_slice().try_into().map(RowNum::from_be_bytes).ok())
- .flatten()
- .unwrap_or(default))
-}