diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2023-11-17 10:46:13 +0100 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2023-11-17 10:46:13 +0100 |
commit | 7eb690e49dd995663e8ea35b1a1f5b14584b4509 (patch) | |
tree | ca6f5a3dd2be863c2d4060f791065998b446215c /src/storage/mod.rs | |
parent | 6da8b815b694a37d39a2be04c8e1585aac17954a (diff) | |
download | aerogramme-7eb690e49dd995663e8ea35b1a1f5b14584b4509.tar.gz aerogramme-7eb690e49dd995663e8ea35b1a1f5b14584b4509.zip |
introduce an "orphan" enum
Diffstat (limited to 'src/storage/mod.rs')
-rw-r--r-- | src/storage/mod.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/storage/mod.rs b/src/storage/mod.rs index 2e3c0ee..c9a49c5 100644 --- a/src/storage/mod.rs +++ b/src/storage/mod.rs @@ -20,6 +20,12 @@ pub enum Alternative { } type ConcurrentValues = Vec<Alternative>; +#[derive(Clone, Debug)] +pub enum OrphanRowRef { + Garage(garage::GrgOrphanRowRef), + Memory(in_memory::MemOrphanRowRef), +} + pub enum Selector<'a> { Range { shard_key: &'a str, begin: &'a str, end: &'a str }, List (Vec<(&'a str, &'a str)>), // list of (shard_key, sort_key) @@ -81,13 +87,14 @@ pub trait IRowStore fn row(&self, partition: &str, sort: &str) -> RowRef; fn select(&self, selector: Selector) -> AsyncResult<Vec<RowValue>>; fn rm(&self, selector: Selector) -> AsyncResult<()>; + fn from_orphan(&self, orphan: OrphanRowRef) -> RowRef; } pub type RowStore = Box<dyn IRowStore + Sync + Send>; pub trait IRowRef { /*fn clone_boxed(&self) -> RowRef;*/ - fn to_orphan(&self) -> RowRefOrphan; + fn to_orphan(&self) -> OrphanRowRef; fn key(&self) -> (&str, &str); fn set_value(&self, content: Vec<u8>) -> RowValue; fn fetch(&self) -> AsyncResult<RowValue>; @@ -101,11 +108,6 @@ pub type RowRef = Box<dyn IRowRef + Send + Sync>; } }*/ -pub trait IRowRefOrphan -{ - fn attach(&self, store: &RowStore) -> RowRef; -} -pub type RowRefOrphan = Box<dyn IRowRefOrphan + Send + Sync>; pub trait IRowValue { |