aboutsummaryrefslogtreecommitdiff
path: root/database/src/backends/memory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/backends/memory.rs')
-rw-r--r--database/src/backends/memory.rs76
1 files changed, 0 insertions, 76 deletions
diff --git a/database/src/backends/memory.rs b/database/src/backends/memory.rs
deleted file mode 100644
index e010a84..0000000
--- a/database/src/backends/memory.rs
+++ /dev/null
@@ -1,76 +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::backends::{Database, ReadTransaction, WriteTransaction};
-use anyhow::Result;
-use std::{
- collections::BTreeMap,
- sync::{RwLock, RwLockReadGuard, RwLockWriteGuard},
-};
-
-type MemdbInner = BTreeMap<Vec<u8>, Vec<u8>>;
-type Memdb = RwLock<MemdbInner>;
-
-pub fn new() -> Memdb {
- Memdb::default()
-}
-
-impl Database for Memdb {
- fn write_transaction(
- &self,
- f: &mut dyn FnMut(&mut dyn WriteTransaction) -> Result<()>,
- ) -> Result<()> {
- f(&mut self.write().unwrap())
- }
- fn read_transaction(
- &self,
- f: &mut dyn FnMut(&dyn ReadTransaction) -> Result<()>,
- ) -> Result<()> {
- f(&self.read().unwrap())
- }
-}
-impl WriteTransaction for RwLockWriteGuard<'_, MemdbInner> {
- fn set(&mut self, key: &[u8], value: &[u8]) -> Result<()> {
- (**self).insert(key.to_vec(), value.to_vec());
- Ok(())
- }
- fn del(&mut self, key: &[u8]) -> Result<()> {
- (**self).remove(key);
- Ok(())
- }
-}
-impl ReadTransaction for RwLockWriteGuard<'_, MemdbInner> {
- fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>> {
- Ok((**self).get(key).cloned())
- }
- fn iter<'a>(
- &'a self,
- key: &[u8],
- reverse: bool,
- ) -> Result<Box<dyn Iterator<Item = Result<Vec<u8>>> + 'a>> {
- Ok(if reverse {
- Box::new(self.range(key.to_vec()..).map(|e| Ok(e.0.to_vec())))
- } else {
- Box::new(self.range(..=key.to_vec()).rev().map(|e| Ok(e.0.to_vec())))
- })
- }
-}
-impl ReadTransaction for RwLockReadGuard<'_, MemdbInner> {
- fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>> {
- Ok((**self).get(key).cloned())
- }
- fn iter<'a>(
- &'a self,
- key: &[u8],
- reverse: bool,
- ) -> Result<Box<dyn Iterator<Item = Result<Vec<u8>>> + 'a>> {
- Ok(if reverse {
- Box::new(self.range(key.to_vec()..).map(|e| Ok(e.0.to_vec())))
- } else {
- Box::new(self.range(..=key.to_vec()).rev().map(|e| Ok(e.0.to_vec())))
- })
- }
-}