aboutsummaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-01-16 04:21:10 +0100
committermetamuffin <metamuffin@disroot.org>2026-01-16 04:21:10 +0100
commit30e13399fa9f815cd1884fe87914cdb22d1985af (patch)
treeea5b22431b73264c120fcb06560ff158c08ed8a4 /database
parent9b5d11a2a39e0030ce4eeab8905972f9472c7d27 (diff)
downloadjellything-30e13399fa9f815cd1884fe87914cdb22d1985af.tar
jellything-30e13399fa9f815cd1884fe87914cdb22d1985af.tar.bz2
jellything-30e13399fa9f815cd1884fe87914cdb22d1985af.tar.zst
begin refactor import
Diffstat (limited to 'database')
-rw-r--r--database/src/query.rs1
-rw-r--r--database/src/table.rs30
2 files changed, 16 insertions, 15 deletions
diff --git a/database/src/query.rs b/database/src/query.rs
index 3c3a07c..aef6338 100644
--- a/database/src/query.rs
+++ b/database/src/query.rs
@@ -18,6 +18,7 @@ pub enum Sort {
None,
Value(ValueSortComponent),
TextSearch(Path, String),
+ Count,
}
pub struct ValueSortComponent {
pub order: SortOrder,
diff --git a/database/src/table.rs b/database/src/table.rs
index 27db06e..eea7c3a 100644
--- a/database/src/table.rs
+++ b/database/src/table.rs
@@ -32,21 +32,21 @@ impl Table {
key.extend(row.to_be_bytes());
key
}
- pub fn insert(&self, db: &mut dyn WriteTransaction, entry: ObjectBuffer) -> Result<RowNum> {
- let mut id_counter = db
+ pub fn insert(&self, txn: &mut dyn WriteTransaction, entry: ObjectBuffer) -> Result<RowNum> {
+ let mut id_counter = txn
.get(&self.id.to_be_bytes())?
.map(|k| k.as_slice().try_into().map(RowNum::from_be_bytes).ok())
.flatten()
.unwrap_or(0);
let row = id_counter;
id_counter += 1;
- db.set(&self.id.to_be_bytes(), &id_counter.to_be_bytes())?;
+ txn.set(&self.id.to_be_bytes(), &id_counter.to_be_bytes())?;
- db.set(&self.key(row), bytemuck::cast_slice(entry.0.as_slice()))?;
+ txn.set(&self.key(row), bytemuck::cast_slice(entry.0.as_slice()))?;
let ob = entry.as_object();
for idx in &self.indices {
- idx.add(db, row, ob)?;
+ idx.add(txn, row, ob)?;
}
Ok(id_counter)
@@ -55,8 +55,8 @@ impl Table {
self.indices.push(Box::new(index.clone()));
index
}
- pub fn get(&self, db: &dyn ReadTransaction, row: RowNum) -> Result<Option<ObjectBuffer>> {
- Ok(db.get(&self.key(row))?.map(ObjectBuffer::from))
+ pub fn get(&self, txn: &dyn ReadTransaction, row: RowNum) -> Result<Option<ObjectBuffer>> {
+ Ok(txn.get(&self.key(row))?.map(ObjectBuffer::from))
}
pub fn remove(&self, db: &mut dyn WriteTransaction, row: RowNum) -> Result<bool> {
let Some(entry) = self.get(db, row)? else {
@@ -71,20 +71,20 @@ impl Table {
}
pub fn update(
&self,
- db: &mut dyn WriteTransaction,
+ txn: &mut dyn WriteTransaction,
row: RowNum,
entry: ObjectBuffer,
) -> Result<()> {
- let before = self.get(db, row)?.ok_or(anyhow!("row to update missing"))?;
+ let before = self.get(txn, row)?.ok_or(anyhow!("row to update missing"))?;
let before = before.as_object();
let after = entry.as_object();
- db.set(&self.key(row), bytemuck::cast_slice(entry.0.as_slice()))?;
+ txn.set(&self.key(row), bytemuck::cast_slice(entry.0.as_slice()))?;
for idx in &self.indices {
if !idx.compare(before, after) {
- idx.remove(db, row, before)?;
- idx.add(db, row, after)?;
+ idx.remove(txn, row, before)?;
+ idx.add(txn, row, after)?;
}
}
@@ -92,12 +92,12 @@ impl Table {
}
pub fn query(
&self,
- db: &dyn ReadTransaction,
+ txn: &dyn ReadTransaction,
query: Query,
) -> Box<dyn Iterator<Item = RowNum>> {
todo!()
}
- pub fn query_single(&self, db: &dyn ReadTransaction, query: Query) -> Option<RowNum> {
- self.query(db, query).next()
+ pub fn query_single(&self, txn: &dyn ReadTransaction, query: Query) -> Option<RowNum> {
+ self.query(txn, query).next()
}
}