add method to iterate opened database columns

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-08-02 01:21:51 +00:00
parent 849cfdcdfa
commit f261d44edb
2 changed files with 12 additions and 2 deletions

View file

@ -2,7 +2,12 @@ use std::{ops::Index, sync::Arc};
use conduit::{Result, Server}; use conduit::{Result, Server};
use crate::{cork::Cork, maps, maps::Maps, Engine, Map}; use crate::{
cork::Cork,
maps,
maps::{Maps, MapsKey, MapsVal},
Engine, Map,
};
pub struct Database { pub struct Database {
pub db: Arc<Engine>, pub db: Arc<Engine>,
@ -30,6 +35,9 @@ impl Database {
#[inline] #[inline]
#[must_use] #[must_use]
pub fn cork_and_sync(&self) -> Cork { Cork::new(&self.db, true, true) } pub fn cork_and_sync(&self) -> Cork { Cork::new(&self.db, true, true) }
#[inline]
pub fn iter_maps(&self) -> impl Iterator<Item = (&MapsKey, &MapsVal)> + '_ { self.map.iter() }
} }
impl Index<&str> for Database { impl Index<&str> for Database {

View file

@ -4,7 +4,9 @@ use conduit::Result;
use crate::{Engine, Map}; use crate::{Engine, Map};
pub type Maps = BTreeMap<String, Arc<Map>>; pub type Maps = BTreeMap<MapsKey, MapsVal>;
pub(crate) type MapsVal = Arc<Map>;
pub(crate) type MapsKey = String;
pub(crate) fn open(db: &Arc<Engine>) -> Result<Maps> { open_list(db, MAPS) } pub(crate) fn open(db: &Arc<Engine>) -> Result<Maps> { open_list(db, MAPS) }