reifydb_core/window/
store.rs1use reifydb_value::{Result, value::row_number::RowNumber};
5use serde::{Serialize, de::DeserializeOwned};
6
7use crate::encoded::key::{EncodedKey, EncodedKeyRange};
8
9pub trait WindowStore {
10 fn state_get<V: DeserializeOwned>(&mut self, key: &EncodedKey) -> Result<Option<V>>;
11
12 fn state_get_many_visit<V: DeserializeOwned>(
13 &mut self,
14 keys: &[EncodedKey],
15 visit: &mut dyn FnMut(EncodedKey, V) -> Result<()>,
16 ) -> Result<()>;
17
18 fn state_set<V: Serialize>(&mut self, key: &EncodedKey, value: &V) -> Result<()>;
19
20 fn state_remove(&mut self, key: &EncodedKey) -> Result<()>;
21
22 fn state_drop(&mut self, key: &EncodedKey) -> Result<()>;
23
24 fn internal_get<V: DeserializeOwned>(&mut self, key: &EncodedKey) -> Result<Option<V>>;
25
26 fn internal_get_many_visit<V: DeserializeOwned>(
27 &mut self,
28 keys: &[EncodedKey],
29 visit: &mut dyn FnMut(EncodedKey, V) -> Result<()>,
30 ) -> Result<()>;
31
32 fn internal_set<V: Serialize>(&mut self, key: &EncodedKey, value: &V) -> Result<()>;
33
34 fn internal_remove(&mut self, key: &EncodedKey) -> Result<()>;
35
36 fn internal_drop(&mut self, key: &EncodedKey) -> Result<()>;
37
38 fn internal_range_visit<V: DeserializeOwned>(
39 &mut self,
40 range: EncodedKeyRange,
41 visit: &mut dyn FnMut(EncodedKey, V) -> Result<()>,
42 ) -> Result<()>;
43
44 fn get_or_create_row_number(&mut self, key: &EncodedKey) -> Result<(RowNumber, bool)>;
45
46 fn get_or_create_row_numbers(&mut self, keys: &[EncodedKey]) -> Result<Vec<(RowNumber, bool)>>;
47
48 fn allocate_row_numbers(&mut self, count: u64) -> Result<RowNumber>;
49
50 fn clock_now_nanos(&self) -> u64;
51}