use brk_error::Result; use brk_traversable::Traversable; use derive_more::{Deref, DerefMut}; use schemars::JsonSchema; use vecdb::{ Database, EagerVec, ImportableVec, PcoVec, Ro, Rw, StorageMode, StoredVec, VecIndex, Version, }; use crate::internal::ComputedVecValue; /// Sum of values in an aggregation period #[derive(Deref, DerefMut, Traversable)] #[traversable(transparent)] pub struct SumVec( pub M::Stored>>, ); impl SumVec { pub(crate) fn forced_import(db: &Database, name: &str, version: Version) -> Result { Ok(Self(EagerVec::forced_import( db, &format!("{name}_sum"), version, )?)) } #[inline] pub(crate) fn inner(&self) -> &EagerVec> { &self.0 } pub fn read_only_clone(&self) -> SumVec { SumVec(StoredVec::read_only_clone(&self.0)) } }