aboutsummaryrefslogtreecommitdiff
path: root/database/src/backends/redb.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-12-15 15:09:37 +0100
committermetamuffin <metamuffin@disroot.org>2025-12-15 15:09:37 +0100
commit0e48299889c3c2b81bf351ffe5da71e0bcd4c22a (patch)
tree8a7ff2bd2330c206070b2062723ba471b2d62544 /database/src/backends/redb.rs
parent7552a4ff0e027334398d28d5687a339ad77c0871 (diff)
downloadjellything-0e48299889c3c2b81bf351ffe5da71e0bcd4c22a.tar
jellything-0e48299889c3c2b81bf351ffe5da71e0bcd4c22a.tar.bz2
jellything-0e48299889c3c2b81bf351ffe5da71e0bcd4c22a.tar.zst
db
Diffstat (limited to 'database/src/backends/redb.rs')
-rw-r--r--database/src/backends/redb.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/database/src/backends/redb.rs b/database/src/backends/redb.rs
index 39fe532..1b672b6 100644
--- a/database/src/backends/redb.rs
+++ b/database/src/backends/redb.rs
@@ -4,7 +4,9 @@
Copyright (C) 2025 metamuffin <metamuffin.org>
*/
-use crate::backends::DatabaseStorage;
+use std::path::Path;
+
+use crate::backends::KV;
use anyhow::Result;
use redb::{Database, ReadableDatabase, TableDefinition};
@@ -14,13 +16,26 @@ pub struct Redb {
const TABLE: TableDefinition<&[u8], &[u8]> = TableDefinition::new("kv");
-impl DatabaseStorage for Redb {
+impl Redb {
+ pub fn new(path: &Path) -> Result<Self> {
+ Ok(Self {
+ db: Database::create(path)?,
+ })
+ }
+}
+impl KV for Redb {
fn set(&self, key: &[u8], value: &[u8]) -> Result<()> {
let txn = self.db.begin_write()?;
txn.open_table(TABLE)?.insert(key, value)?;
txn.commit()?;
Ok(())
}
+ fn del(&self, key: &[u8]) -> Result<()> {
+ let txn = self.db.begin_write()?;
+ txn.open_table(TABLE)?.remove(key)?;
+ txn.commit()?;
+ Ok(())
+ }
fn get<'a>(&'a self, key: &[u8]) -> Result<Option<Vec<u8>>> {
let txn = self.db.begin_read()?;
match txn.open_table(TABLE)?.get(key)? {