icydb_core/db/store/
data.rs1use crate::db::store::{DataKey, RawDataKey, RawRow};
2use canic_cdk::structures::{BTreeMap, DefaultMemoryImpl, memory::VirtualMemory};
3use derive_more::{Deref, DerefMut};
4
5pub type DataRow = (DataKey, RawRow);
10
11#[derive(Deref, DerefMut)]
15pub struct DataStore(BTreeMap<RawDataKey, RawRow, VirtualMemory<DefaultMemoryImpl>>);
16
17impl DataStore {
18 #[must_use]
19 pub fn init(memory: VirtualMemory<DefaultMemoryImpl>) -> Self {
21 Self(BTreeMap::init(memory))
22 }
23
24 pub fn clear(&mut self) {
26 self.0.clear();
27 }
28
29 pub fn memory_bytes(&self) -> u64 {
31 self.iter()
32 .map(|entry| DataKey::STORED_SIZE_BYTES + entry.value().len() as u64)
33 .sum()
34 }
35}