diff --git a/crates/brk_computer/src/internal/group/distribution.rs b/crates/brk_computer/src/internal/aggregate/distribution.rs similarity index 100% rename from crates/brk_computer/src/internal/group/distribution.rs rename to crates/brk_computer/src/internal/aggregate/distribution.rs diff --git a/crates/brk_computer/src/internal/group/full.rs b/crates/brk_computer/src/internal/aggregate/full.rs similarity index 100% rename from crates/brk_computer/src/internal/group/full.rs rename to crates/brk_computer/src/internal/aggregate/full.rs diff --git a/crates/brk_computer/src/internal/group/mod.rs b/crates/brk_computer/src/internal/aggregate/mod.rs similarity index 100% rename from crates/brk_computer/src/internal/group/mod.rs rename to crates/brk_computer/src/internal/aggregate/mod.rs diff --git a/crates/brk_computer/src/internal/group/sum_cumulative.rs b/crates/brk_computer/src/internal/aggregate/sum_cumulative.rs similarity index 100% rename from crates/brk_computer/src/internal/group/sum_cumulative.rs rename to crates/brk_computer/src/internal/aggregate/sum_cumulative.rs diff --git a/crates/brk_computer/src/internal/compute.rs b/crates/brk_computer/src/internal/algo/aggregation.rs similarity index 99% rename from crates/brk_computer/src/internal/compute.rs rename to crates/brk_computer/src/internal/algo/aggregation.rs index 0b1b3fe49..3f0a73e52 100644 --- a/crates/brk_computer/src/internal/compute.rs +++ b/crates/brk_computer/src/internal/algo/aggregation.rs @@ -13,7 +13,7 @@ use vecdb::{ use brk_types::get_percentile; -use super::ComputedVecValue; +use crate::internal::ComputedVecValue; /// Helper to validate and get starting index for a single vec fn validate_and_start( diff --git a/crates/brk_computer/src/internal/algo/mod.rs b/crates/brk_computer/src/internal/algo/mod.rs new file mode 100644 index 000000000..b266401b2 --- /dev/null +++ b/crates/brk_computer/src/internal/algo/mod.rs @@ -0,0 +1,6 @@ +mod aggregation; +pub(crate) mod sliding_window; +mod tdigest; + +pub(crate) use aggregation::*; +pub(crate) use tdigest::*; diff --git a/crates/brk_computer/src/internal/sliding_window.rs b/crates/brk_computer/src/internal/algo/sliding_window.rs similarity index 100% rename from crates/brk_computer/src/internal/sliding_window.rs rename to crates/brk_computer/src/internal/algo/sliding_window.rs diff --git a/crates/brk_computer/src/internal/tdigest.rs b/crates/brk_computer/src/internal/algo/tdigest.rs similarity index 100% rename from crates/brk_computer/src/internal/tdigest.rs rename to crates/brk_computer/src/internal/algo/tdigest.rs diff --git a/crates/brk_computer/src/internal/height_derived/full.rs b/crates/brk_computer/src/internal/derived/full.rs similarity index 100% rename from crates/brk_computer/src/internal/height_derived/full.rs rename to crates/brk_computer/src/internal/derived/full.rs diff --git a/crates/brk_computer/src/internal/height_derived/last.rs b/crates/brk_computer/src/internal/derived/last.rs similarity index 100% rename from crates/brk_computer/src/internal/height_derived/last.rs rename to crates/brk_computer/src/internal/derived/last.rs diff --git a/crates/brk_computer/src/internal/height_derived/lazy_last.rs b/crates/brk_computer/src/internal/derived/lazy_last.rs similarity index 100% rename from crates/brk_computer/src/internal/height_derived/lazy_last.rs rename to crates/brk_computer/src/internal/derived/lazy_last.rs diff --git a/crates/brk_computer/src/internal/height_derived/lazy_value_last.rs b/crates/brk_computer/src/internal/derived/lazy_value.rs similarity index 100% rename from crates/brk_computer/src/internal/height_derived/lazy_value_last.rs rename to crates/brk_computer/src/internal/derived/lazy_value.rs diff --git a/crates/brk_computer/src/internal/height_derived/mod.rs b/crates/brk_computer/src/internal/derived/mod.rs similarity index 65% rename from crates/brk_computer/src/internal/height_derived/mod.rs rename to crates/brk_computer/src/internal/derived/mod.rs index ded64d29d..43637a2cb 100644 --- a/crates/brk_computer/src/internal/height_derived/mod.rs +++ b/crates/brk_computer/src/internal/derived/mod.rs @@ -1,9 +1,9 @@ mod full; mod last; mod lazy_last; -mod lazy_value_last; +mod lazy_value; pub use full::*; pub use last::*; pub use lazy_last::*; -pub use lazy_value_last::*; +pub use lazy_value::*; diff --git a/crates/brk_computer/src/internal/emas/emas_1w_1m.rs b/crates/brk_computer/src/internal/emas.rs similarity index 55% rename from crates/brk_computer/src/internal/emas/emas_1w_1m.rs rename to crates/brk_computer/src/internal/emas.rs index 762ddce52..8107f73dd 100644 --- a/crates/brk_computer/src/internal/emas/emas_1w_1m.rs +++ b/crates/brk_computer/src/internal/emas.rs @@ -1,4 +1,4 @@ -//! Generic 2-slot container for 1w + 1m EMA pairs. +//! Generic EMA window containers. use brk_traversable::Traversable; @@ -30,3 +30,29 @@ impl Emas1w1m { [&mut self._1w, &mut self._1m] } } + +#[derive(Clone, Traversable)] +pub struct Emas2w { + #[traversable(rename = "2w")] + pub _2w: A, +} + +impl Emas2w { + pub const SUFFIXES: [&'static str; 1] = ["ema_2w"]; + + pub fn try_from_fn( + mut f: impl FnMut(&str) -> std::result::Result, + ) -> std::result::Result { + Ok(Self { + _2w: f(Self::SUFFIXES[0])?, + }) + } + + pub fn as_array(&self) -> [&A; 1] { + [&self._2w] + } + + pub fn as_mut_array(&mut self) -> [&mut A; 1] { + [&mut self._2w] + } +} diff --git a/crates/brk_computer/src/internal/emas/emas_2w.rs b/crates/brk_computer/src/internal/emas/emas_2w.rs deleted file mode 100644 index 3cc14c26f..000000000 --- a/crates/brk_computer/src/internal/emas/emas_2w.rs +++ /dev/null @@ -1,29 +0,0 @@ -//! Generic 1-slot container for 2w EMA. - -use brk_traversable::Traversable; - -#[derive(Clone, Traversable)] -pub struct Emas2w { - #[traversable(rename = "2w")] - pub _2w: A, -} - -impl Emas2w { - pub const SUFFIXES: [&'static str; 1] = ["ema_2w"]; - - pub fn try_from_fn( - mut f: impl FnMut(&str) -> std::result::Result, - ) -> std::result::Result { - Ok(Self { - _2w: f(Self::SUFFIXES[0])?, - }) - } - - pub fn as_array(&self) -> [&A; 1] { - [&self._2w] - } - - pub fn as_mut_array(&mut self) -> [&mut A; 1] { - [&mut self._2w] - } -} diff --git a/crates/brk_computer/src/internal/emas/mod.rs b/crates/brk_computer/src/internal/emas/mod.rs deleted file mode 100644 index 560095304..000000000 --- a/crates/brk_computer/src/internal/emas/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod emas_1w_1m; -mod emas_2w; - -pub use emas_1w_1m::*; -pub use emas_2w::*; diff --git a/crates/brk_computer/src/internal/from_height/by_unit/mod.rs b/crates/brk_computer/src/internal/from_height/by_unit/mod.rs index 8c9ee1243..fc84ecf72 100644 --- a/crates/brk_computer/src/internal/from_height/by_unit/mod.rs +++ b/crates/brk_computer/src/internal/from_height/by_unit/mod.rs @@ -1,6 +1,5 @@ mod rolling_full; mod rolling_sum; -mod windows; use brk_error::Result; use brk_traversable::Traversable; @@ -10,7 +9,7 @@ use vecdb::{Database, ReadableCloneableVec, Rw, StorageMode}; use crate::{ indexes, internal::{ - CentsUnsignedToDollars, ComputedFromHeight, LazyFromHeight, SatsToBitcoin, + CentsUnsignedToDollars, ComputedFromHeight, LazyFromHeight, SatsToBitcoin, Windows, }, }; @@ -63,3 +62,16 @@ impl ByUnit { }) } } + +impl Windows { + pub(crate) fn forced_import( + db: &Database, + name: &str, + version: Version, + indexes: &indexes::Vecs, + ) -> Result { + Windows::try_from_fn(|suffix| { + ByUnit::forced_import(db, &format!("{name}_{suffix}"), version, indexes) + }) + } +} diff --git a/crates/brk_computer/src/internal/from_height/by_unit/windows.rs b/crates/brk_computer/src/internal/from_height/by_unit/windows.rs deleted file mode 100644 index f317c5d4d..000000000 --- a/crates/brk_computer/src/internal/from_height/by_unit/windows.rs +++ /dev/null @@ -1,21 +0,0 @@ -use brk_error::Result; -use brk_types::Version; -use vecdb::Database; - -use crate::{ - indexes, - internal::{ByUnit, Windows}, -}; - -impl Windows { - pub(crate) fn forced_import( - db: &Database, - name: &str, - version: Version, - indexes: &indexes::Vecs, - ) -> Result { - Windows::try_from_fn(|suffix| { - ByUnit::forced_import(db, &format!("{name}_{suffix}"), version, indexes) - }) - } -} diff --git a/crates/brk_computer/src/internal/from_height/lazy_base.rs b/crates/brk_computer/src/internal/from_height/lazy.rs similarity index 100% rename from crates/brk_computer/src/internal/from_height/lazy_base.rs rename to crates/brk_computer/src/internal/from_height/lazy.rs diff --git a/crates/brk_computer/src/internal/from_height/mod.rs b/crates/brk_computer/src/internal/from_height/mod.rs index 0340355a4..aae6c8447 100644 --- a/crates/brk_computer/src/internal/from_height/mod.rs +++ b/crates/brk_computer/src/internal/from_height/mod.rs @@ -7,7 +7,7 @@ mod cumulative_sum; mod distribution; mod fiat; mod full; -mod lazy_base; +mod lazy; mod percent; mod percent_distribution; mod percentiles; @@ -25,7 +25,7 @@ pub use cumulative_sum::*; pub use distribution::*; pub use fiat::*; pub use full::*; -pub use lazy_base::*; +pub use lazy::*; pub use percent::*; pub use percent_distribution::*; pub use percentiles::*; diff --git a/crates/brk_computer/src/internal/tx_derived/distribution.rs b/crates/brk_computer/src/internal/from_tx/derived.rs similarity index 100% rename from crates/brk_computer/src/internal/tx_derived/distribution.rs rename to crates/brk_computer/src/internal/from_tx/derived.rs diff --git a/crates/brk_computer/src/internal/from_tx/mod.rs b/crates/brk_computer/src/internal/from_tx/mod.rs index 8405ee007..1938e78eb 100644 --- a/crates/brk_computer/src/internal/from_tx/mod.rs +++ b/crates/brk_computer/src/internal/from_tx/mod.rs @@ -1,5 +1,7 @@ +mod derived; mod distribution; mod lazy_distribution; +pub use derived::*; pub use distribution::*; pub use lazy_distribution::*; diff --git a/crates/brk_computer/src/internal/mod.rs b/crates/brk_computer/src/internal/mod.rs index df9d33c41..360f3e4c7 100644 --- a/crates/brk_computer/src/internal/mod.rs +++ b/crates/brk_computer/src/internal/mod.rs @@ -1,40 +1,35 @@ -mod compute; +pub(crate) mod algo; +mod aggregate; +mod derived; mod distribution_stats; mod eager_indexes; mod emas; mod from_height; mod from_tx; -mod group; -mod height_derived; mod indexes; mod lazy_eager_indexes; mod lazy_value; mod rolling; -pub(crate) mod sliding_window; -mod tdigest; +mod stat_vec; mod traits; mod transform; -mod tx_derived; mod value; -mod vec; mod windows; -pub(crate) use compute::*; +pub(crate) use algo::*; +pub(crate) use aggregate::*; +pub(crate) use derived::*; pub(crate) use distribution_stats::*; pub(crate) use eager_indexes::*; pub(crate) use emas::*; pub(crate) use from_height::*; pub(crate) use from_tx::*; -pub(crate) use group::*; -pub(crate) use height_derived::*; pub(crate) use indexes::*; pub(crate) use lazy_eager_indexes::*; pub(crate) use lazy_value::*; pub(crate) use rolling::*; -pub(crate) use tdigest::*; +pub(crate) use stat_vec::*; pub(crate) use traits::*; pub use transform::*; -pub(crate) use tx_derived::*; pub(crate) use value::*; -pub(crate) use vec::*; pub(crate) use windows::*; diff --git a/crates/brk_computer/src/internal/stat_vec.rs b/crates/brk_computer/src/internal/stat_vec.rs new file mode 100644 index 000000000..be8b6995d --- /dev/null +++ b/crates/brk_computer/src/internal/stat_vec.rs @@ -0,0 +1,103 @@ +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; + +macro_rules! define_stat_vec { + ($name:ident, $suffix:literal, $doc:literal) => { + #[doc = $doc] + #[derive(Deref, DerefMut, Traversable)] + pub struct $name( + pub M::Stored>>, + ); + + impl $name { + pub(crate) fn forced_import( + db: &Database, + name: &str, + version: Version, + ) -> Result { + Ok(Self(EagerVec::forced_import( + db, + &format!("{name}_{}", $suffix), + version, + )?)) + } + + pub fn read_only_clone(&self) -> $name { + $name(StoredVec::read_only_clone(&self.0)) + } + } + }; +} + +macro_rules! define_stat_vec_transparent { + ($name:ident, $suffix:literal, $doc:literal) => { + #[doc = $doc] + #[derive(Deref, DerefMut, Traversable)] + #[traversable(transparent)] + pub struct $name( + pub M::Stored>>, + ); + + impl $name { + pub(crate) fn forced_import( + db: &Database, + name: &str, + version: Version, + ) -> Result { + Ok(Self(EagerVec::forced_import( + db, + &format!("{name}_{}", $suffix), + version, + )?)) + } + + pub fn read_only_clone(&self) -> $name { + $name(StoredVec::read_only_clone(&self.0)) + } + } + }; +} + +define_stat_vec!(AverageVec, "average", "Average value in an aggregation period"); +define_stat_vec!(MinVec, "min", "Minimum value in an aggregation period"); +define_stat_vec!(MaxVec, "max", "Maximum value in an aggregation period"); +define_stat_vec!(Pct10Vec, "pct10", "10th percentile in an aggregation period"); +define_stat_vec!(Pct25Vec, "pct25", "25th percentile in an aggregation period"); +define_stat_vec!(MedianVec, "median", "Median (50th percentile) in an aggregation period"); +define_stat_vec!(Pct75Vec, "pct75", "75th percentile in an aggregation period"); +define_stat_vec!(Pct90Vec, "pct90", "90th percentile in an aggregation period"); + +define_stat_vec_transparent!(CumulativeVec, "cumulative", "Cumulative sum across aggregation periods"); + +/// 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)) + } +} diff --git a/crates/brk_computer/src/internal/tx_derived/mod.rs b/crates/brk_computer/src/internal/tx_derived/mod.rs deleted file mode 100644 index 79fe1f2d5..000000000 --- a/crates/brk_computer/src/internal/tx_derived/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod distribution; - -pub use distribution::*; diff --git a/crates/brk_computer/src/internal/vec/average.rs b/crates/brk_computer/src/internal/vec/average.rs deleted file mode 100644 index 1de7f1a3b..000000000 --- a/crates/brk_computer/src/internal/vec/average.rs +++ /dev/null @@ -1,29 +0,0 @@ -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; - -/// Average value in an aggregation period -#[derive(Deref, DerefMut, Traversable)] -pub struct AverageVec( - pub M::Stored>>, -); - -impl AverageVec { - pub(crate) fn forced_import(db: &Database, name: &str, version: Version) -> Result { - Ok(Self(EagerVec::forced_import( - db, - &format!("{name}_average"), - version, - )?)) - } - - pub fn read_only_clone(&self) -> AverageVec { - AverageVec(StoredVec::read_only_clone(&self.0)) - } -} diff --git a/crates/brk_computer/src/internal/vec/cumulative.rs b/crates/brk_computer/src/internal/vec/cumulative.rs deleted file mode 100644 index e35a1be4a..000000000 --- a/crates/brk_computer/src/internal/vec/cumulative.rs +++ /dev/null @@ -1,30 +0,0 @@ -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; - -/// Cumulative sum across aggregation periods -#[derive(Deref, DerefMut, Traversable)] -#[traversable(transparent)] -pub struct CumulativeVec( - pub M::Stored>>, -); - -impl CumulativeVec { - pub(crate) fn forced_import(db: &Database, name: &str, version: Version) -> Result { - Ok(Self(EagerVec::forced_import( - db, - &format!("{name}_cumulative"), - version, - )?)) - } - - pub fn read_only_clone(&self) -> CumulativeVec { - CumulativeVec(StoredVec::read_only_clone(&self.0)) - } -} diff --git a/crates/brk_computer/src/internal/vec/max.rs b/crates/brk_computer/src/internal/vec/max.rs deleted file mode 100644 index 83fa50339..000000000 --- a/crates/brk_computer/src/internal/vec/max.rs +++ /dev/null @@ -1,29 +0,0 @@ -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; - -/// Maximum value in an aggregation period -#[derive(Deref, DerefMut, Traversable)] -pub struct MaxVec( - pub M::Stored>>, -); - -impl MaxVec { - pub(crate) fn forced_import(db: &Database, name: &str, version: Version) -> Result { - Ok(Self(EagerVec::forced_import( - db, - &format!("{name}_max"), - version, - )?)) - } - - pub fn read_only_clone(&self) -> MaxVec { - MaxVec(StoredVec::read_only_clone(&self.0)) - } -} diff --git a/crates/brk_computer/src/internal/vec/min.rs b/crates/brk_computer/src/internal/vec/min.rs deleted file mode 100644 index 68def91ee..000000000 --- a/crates/brk_computer/src/internal/vec/min.rs +++ /dev/null @@ -1,29 +0,0 @@ -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( - pub M::Stored>>, -); - -impl MinVec { - pub(crate) fn forced_import(db: &Database, name: &str, version: Version) -> Result { - Ok(Self(EagerVec::forced_import( - db, - &format!("{name}_min"), - version, - )?)) - } - - pub fn read_only_clone(&self) -> MinVec { - MinVec(StoredVec::read_only_clone(&self.0)) - } -} diff --git a/crates/brk_computer/src/internal/vec/mod.rs b/crates/brk_computer/src/internal/vec/mod.rs deleted file mode 100644 index b82232b9d..000000000 --- a/crates/brk_computer/src/internal/vec/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -mod average; -mod cumulative; -mod max; -mod min; -mod percentiles; -mod sum; - -pub use average::*; -pub use cumulative::*; -pub use max::*; -pub use min::*; -pub use percentiles::*; -pub use sum::*; diff --git a/crates/brk_computer/src/internal/vec/percentiles.rs b/crates/brk_computer/src/internal/vec/percentiles.rs deleted file mode 100644 index c62dbd88e..000000000 --- a/crates/brk_computer/src/internal/vec/percentiles.rs +++ /dev/null @@ -1,65 +0,0 @@ -//! Percentile vec types for aggregation periods. - -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; - -macro_rules! define_percentile_vec { - ($name:ident, $suffix:literal, $doc:literal) => { - #[doc = $doc] - #[derive(Deref, DerefMut, Traversable)] - pub struct $name( - pub M::Stored>>, - ); - - impl $name { - pub(crate) fn forced_import( - db: &Database, - name: &str, - version: Version, - ) -> Result { - Ok(Self(EagerVec::forced_import( - db, - &format!("{name}_{}", $suffix), - version, - )?)) - } - - pub fn read_only_clone(&self) -> $name { - $name(StoredVec::read_only_clone(&self.0)) - } - } - }; -} - -define_percentile_vec!( - Pct10Vec, - "pct10", - "10th percentile in an aggregation period" -); -define_percentile_vec!( - Pct25Vec, - "pct25", - "25th percentile in an aggregation period" -); -define_percentile_vec!( - MedianVec, - "median", - "Median (50th percentile) in an aggregation period" -); -define_percentile_vec!( - Pct75Vec, - "pct75", - "75th percentile in an aggregation period" -); -define_percentile_vec!( - Pct90Vec, - "pct90", - "90th percentile in an aggregation period" -); diff --git a/crates/brk_computer/src/internal/vec/sum.rs b/crates/brk_computer/src/internal/vec/sum.rs deleted file mode 100644 index f7a9b2959..000000000 --- a/crates/brk_computer/src/internal/vec/sum.rs +++ /dev/null @@ -1,35 +0,0 @@ -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)) - } -} diff --git a/crates/brk_computer/src/traits/mod.rs b/crates/brk_computer/src/traits/mod.rs index 6e390c53d..cf3725f37 100644 --- a/crates/brk_computer/src/traits/mod.rs +++ b/crates/brk_computer/src/traits/mod.rs @@ -5,7 +5,7 @@ use vecdb::{ WritableVec, }; -use crate::internal::sliding_window::SlidingWindowSorted; +use crate::internal::algo::sliding_window::SlidingWindowSorted; pub trait ComputeRollingMedianFromStarts { fn compute_rolling_median_from_starts(