mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-24 14:49:58 -07:00
global: snapshot
This commit is contained in:
29
crates/brk_computer/src/internal/vec/min.rs
Normal file
29
crates/brk_computer/src/internal/vec/min.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
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;
|
||||
|
||||
/// Minimum value in an aggregation period
|
||||
#[derive(Deref, DerefMut, Traversable)]
|
||||
pub struct MinVec<I: VecIndex, T: ComputedVecValue + JsonSchema, M: StorageMode = Rw>(
|
||||
pub M::Stored<EagerVec<PcoVec<I, T>>>,
|
||||
);
|
||||
|
||||
impl<I: VecIndex, T: ComputedVecValue + JsonSchema> MinVec<I, T> {
|
||||
pub(crate) fn forced_import(db: &Database, name: &str, version: Version) -> Result<Self> {
|
||||
Ok(Self(EagerVec::forced_import(
|
||||
db,
|
||||
&format!("{name}_min"),
|
||||
version,
|
||||
)?))
|
||||
}
|
||||
|
||||
pub fn read_only_clone(&self) -> MinVec<I, T, Ro> {
|
||||
MinVec(StoredVec::read_only_clone(&self.0))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user