mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-24 06:39:58 -07:00
30 lines
903 B
Rust
30 lines
903 B
Rust
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))
|
|
}
|
|
}
|