aboutsummaryrefslogtreecommitdiff
path: root/database/src/kv/sort
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/kv/sort')
-rw-r--r--database/src/kv/sort/mod.rs9
-rw-r--r--database/src/kv/sort/none.rs50
-rw-r--r--database/src/kv/sort/value.rs86
3 files changed, 0 insertions, 145 deletions
diff --git a/database/src/kv/sort/mod.rs b/database/src/kv/sort/mod.rs
deleted file mode 100644
index 8b814cd..0000000
--- a/database/src/kv/sort/mod.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2026 metamuffin <metamuffin.org>
-*/
-
-
-pub mod none;
-pub mod value;
diff --git a/database/src/kv/sort/none.rs b/database/src/kv/sort/none.rs
deleted file mode 100644
index 4044919..0000000
--- a/database/src/kv/sort/none.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2026 metamuffin <metamuffin.org>
-*/
-
-use crate::{
- RowNum,
- kv::{SubtreeNum, binning::Binning},
-};
-use jellyobject::Object;
-
-pub struct UnsortedIndex {
- id: SubtreeNum,
- binning: Binning,
-}
-
-impl UnsortedIndex {
- pub fn new(id: SubtreeNum, binning: Binning) -> Self {
- Self { id, binning }
- }
- fn keys(&self, id: RowNum, ob: Object) -> Vec<Vec<u8>> {
- let mut keys = vec![self.id.to_be_bytes().to_vec()];
- self.binning.apply(ob, &mut keys);
- for k in &mut keys {
- k.extend(id.to_ne_bytes());
- }
- keys
- }
-}
-// impl Index for UnsortedIndex {
-// fn add(&self, db: &mut dyn WriteTransaction, id: RowNum, ob: Object) -> Result<()> {
-// for key in self.keys(id, ob) {
-// db.set(&key, &[])?;
-// }
-// Ok(())
-// }
-// fn remove(&self, db: &mut dyn WriteTransaction, id: RowNum, ob: Object) -> Result<()> {
-// for key in self.keys(id, ob) {
-// db.del(&key)?;
-// }
-// Ok(())
-// }
-// fn compare(&self, before: Object, after: Object) -> bool {
-// self.keys(0, before) == self.keys(0, after)
-// }
-// fn query(&self, txn: &mut dyn ReadTransaction, _sort: &Sort) -> Result<RowIter> {
-// todo!()
-// }
-// }
diff --git a/database/src/kv/sort/value.rs b/database/src/kv/sort/value.rs
deleted file mode 100644
index 5637ac7..0000000
--- a/database/src/kv/sort/value.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2026 metamuffin <metamuffin.org>
-*/
-
-use jellyobject::Object;
-
-use crate::{
- MultiBehaviour, RowNum, ValueSort,
- kv::{SubtreeNum, binning::Binning},
-};
-
-pub struct ValueIndex {
- id: SubtreeNum,
- binning: Binning,
- sort: ValueSort,
-}
-
-impl ValueIndex {
- pub fn new(id: SubtreeNum, binning: Binning, sort: ValueSort) -> Self {
- Self { id, binning, sort }
- }
- fn keys(&self, id: RowNum, ob: Object) -> Vec<Vec<u8>> {
- let mut keys = vec![self.id.to_be_bytes().to_vec()];
- self.binning.apply(ob, &mut keys);
- self.sort.apply(ob, &mut keys);
- for k in &mut keys {
- k.extend(id.to_ne_bytes());
- }
- keys
- }
-}
-// impl Index for ValueIndex {
-// fn add(&self, db: &mut dyn WriteTransaction, id: RowNum, ob: Object) -> Result<()> {
-// for key in self.keys(id, ob) {
-// db.set(&key, &[])?;
-// }
-// Ok(())
-// }
-// fn remove(&self, db: &mut dyn WriteTransaction, id: RowNum, ob: Object) -> Result<()> {
-// for key in self.keys(id, ob) {
-// db.del(&key)?;
-// }
-// Ok(())
-// }
-// fn compare(&self, before: Object, after: Object) -> bool {
-// self.keys(0, before) == self.keys(0, after)
-// }
-// fn query(&self, txn: &mut dyn ReadTransaction, sort: &Sort) -> Result<RowIter> {
-// todo!()
-// }
-// }
-impl ValueSort {
- fn apply(&self, ob: Object, keys: &mut Vec<Vec<u8>>) {
- match self.multi {
- MultiBehaviour::First => {
- if let Some(val) = self.path.get_matching_value(ob) {
- for k in keys.iter_mut() {
- k.extend(val);
- }
- } else {
- keys.clear();
- }
- }
- MultiBehaviour::ForEach => {
- let mut keys_out = Vec::new();
- for val in self.path.get_matching_values(ob) {
- for mut k in keys.clone() {
- k.extend(val);
- keys_out.push(k);
- }
- }
- *keys = keys_out
- }
- MultiBehaviour::Max => todo!(),
- MultiBehaviour::Min => todo!(),
- MultiBehaviour::Count => {
- let count = self.path.get_matching_values(ob).len() as u32;
- for k in keys.iter_mut() {
- k.extend(count.to_be_bytes());
- }
- }
- }
- }
-}