diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-01-14 22:13:19 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-01-14 22:13:19 +0100 |
| commit | 8c0ee6d17fe0dbd7748e7b60ff01a0e8f25faa51 (patch) | |
| tree | 1ff5856dec2a359f01a340e428704b028df38e51 /database/src/backends/memory.rs | |
| parent | 314b9cf6eddda6d0a3c5bd153e960873622224b1 (diff) | |
| download | jellything-8c0ee6d17fe0dbd7748e7b60ff01a0e8f25faa51.tar jellything-8c0ee6d17fe0dbd7748e7b60ff01a0e8f25faa51.tar.bz2 jellything-8c0ee6d17fe0dbd7748e7b60ff01a0e8f25faa51.tar.zst | |
implement db trait without wrappers
Diffstat (limited to 'database/src/backends/memory.rs')
| -rw-r--r-- | database/src/backends/memory.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/database/src/backends/memory.rs b/database/src/backends/memory.rs index d7d0e2c..0c1635f 100644 --- a/database/src/backends/memory.rs +++ b/database/src/backends/memory.rs @@ -4,30 +4,31 @@ Copyright (C) 2026 metamuffin <metamuffin.org> */ -use crate::backends::{Db, ReadTransaction, ReadTxnFunction, WriteTransaction, WriteTxnFunction}; +use crate::backends::{ + Database, ReadTransaction, ReadTxnFunction, WriteTransaction, WriteTxnFunction, +}; use anyhow::Result; use std::{ collections::BTreeMap, sync::{RwLock, RwLockReadGuard, RwLockWriteGuard}, }; -type Inner = BTreeMap<Vec<u8>, Vec<u8>>; -pub struct Memory(RwLock<BTreeMap<Vec<u8>, Vec<u8>>>); +type MemdbInner = BTreeMap<Vec<u8>, Vec<u8>>; +type Memdb = RwLock<MemdbInner>; -impl Memory { - pub fn new() -> Self { - Self(RwLock::new(BTreeMap::new())) - } +pub fn new() -> Memdb { + Memdb::default() } -impl Db for Memory { + +impl Database for Memdb { fn write_transaction(&self, f: &mut WriteTxnFunction) -> Result<()> { - f(&mut self.0.write().unwrap()) + f(&mut self.write().unwrap()) } fn read_transaction(&self, f: &mut ReadTxnFunction) -> Result<()> { - f(&self.0.read().unwrap()) + f(&self.read().unwrap()) } } -impl WriteTransaction for RwLockWriteGuard<'_, Inner> { +impl WriteTransaction for RwLockWriteGuard<'_, MemdbInner> { fn set(&mut self, key: &[u8], value: &[u8]) -> Result<()> { (**self).insert(key.to_vec(), value.to_vec()); Ok(()) @@ -37,7 +38,7 @@ impl WriteTransaction for RwLockWriteGuard<'_, Inner> { Ok(()) } } -impl ReadTransaction for RwLockWriteGuard<'_, Inner> { +impl ReadTransaction for RwLockWriteGuard<'_, MemdbInner> { fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>> { Ok((**self).get(key).cloned()) } @@ -53,7 +54,7 @@ impl ReadTransaction for RwLockWriteGuard<'_, Inner> { }) } } -impl ReadTransaction for RwLockReadGuard<'_, Inner> { +impl ReadTransaction for RwLockReadGuard<'_, MemdbInner> { fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>> { Ok((**self).get(key).cloned()) } |