mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-29 19:58:10 -07:00
global: veccached change
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
use brk_types::{
|
||||
Day1, Day3, Epoch, Halving, Height, Hour1, Hour4, Hour12, Minute10, Minute30, Month1, Month3,
|
||||
Month6, Week1, Year1, Year10,
|
||||
};
|
||||
use vecdb::CachedVec;
|
||||
|
||||
use super::Vecs;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CachedMappings {
|
||||
pub minute10_first_height: CachedVec<Minute10, Height>,
|
||||
pub minute30_first_height: CachedVec<Minute30, Height>,
|
||||
pub hour1_first_height: CachedVec<Hour1, Height>,
|
||||
pub hour4_first_height: CachedVec<Hour4, Height>,
|
||||
pub hour12_first_height: CachedVec<Hour12, Height>,
|
||||
pub day1_first_height: CachedVec<Day1, Height>,
|
||||
pub day3_first_height: CachedVec<Day3, Height>,
|
||||
pub week1_first_height: CachedVec<Week1, Height>,
|
||||
pub month1_first_height: CachedVec<Month1, Height>,
|
||||
pub month3_first_height: CachedVec<Month3, Height>,
|
||||
pub month6_first_height: CachedVec<Month6, Height>,
|
||||
pub year1_first_height: CachedVec<Year1, Height>,
|
||||
pub year10_first_height: CachedVec<Year10, Height>,
|
||||
pub halving_identity: CachedVec<Halving, Halving>,
|
||||
pub epoch_identity: CachedVec<Epoch, Epoch>,
|
||||
}
|
||||
|
||||
impl CachedMappings {
|
||||
pub fn new(vecs: &Vecs) -> Self {
|
||||
Self {
|
||||
minute10_first_height: CachedVec::new(&vecs.minute10.first_height),
|
||||
minute30_first_height: CachedVec::new(&vecs.minute30.first_height),
|
||||
hour1_first_height: CachedVec::new(&vecs.hour1.first_height),
|
||||
hour4_first_height: CachedVec::new(&vecs.hour4.first_height),
|
||||
hour12_first_height: CachedVec::new(&vecs.hour12.first_height),
|
||||
day1_first_height: CachedVec::new(&vecs.day1.first_height),
|
||||
day3_first_height: CachedVec::new(&vecs.day3.first_height),
|
||||
week1_first_height: CachedVec::new(&vecs.week1.first_height),
|
||||
month1_first_height: CachedVec::new(&vecs.month1.first_height),
|
||||
month3_first_height: CachedVec::new(&vecs.month3.first_height),
|
||||
month6_first_height: CachedVec::new(&vecs.month6.first_height),
|
||||
year1_first_height: CachedVec::new(&vecs.year1.first_height),
|
||||
year10_first_height: CachedVec::new(&vecs.year10.first_height),
|
||||
halving_identity: CachedVec::new(&vecs.halving.identity),
|
||||
epoch_identity: CachedVec::new(&vecs.epoch.identity),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Day1, Height, StoredU64, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
use brk_types::{Date, Day1, Height, Version};
|
||||
use vecdb::{CachedVec, Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
@@ -8,8 +8,7 @@ use brk_error::Result;
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Day1, Day1>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Day1, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Day1, Height>>>,
|
||||
pub height_count: M::Stored<EagerVec<PcoVec<Day1, StoredU64>>>,
|
||||
pub first_height: CachedVec<M::Stored<EagerVec<PcoVec<Day1, Height>>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
@@ -17,8 +16,7 @@ impl Vecs {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "day1_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version + Version::ONE)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
height_count: EagerVec::forced_import(db, "height_count", version)?,
|
||||
first_height: CachedVec::wrap(EagerVec::forced_import(db, "first_height", version)?),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Day3, Height, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Day3, Day3>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Day3, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "day3_index", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Epoch, Height, StoredU64, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Epoch, Epoch>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Epoch, Height>>>,
|
||||
pub height_count: M::Stored<EagerVec<PcoVec<Epoch, StoredU64>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "epoch", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
height_count: EagerVec::forced_import(db, "height_count", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Halving, Height, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Halving, Halving>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Halving, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "halving", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Height, Hour1, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Hour1, Hour1>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Hour1, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "hour1_index", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Height, Hour12, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Hour12, Hour12>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Hour12, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "hour12_index", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Height, Hour4, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Hour4, Hour4>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Hour4, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "hour4_index", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Height, Minute10, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Minute10, Minute10>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Minute10, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "minute10_index", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Height, Minute30, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Minute30, Minute30>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Minute30, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "minute30_index", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,12 @@
|
||||
mod addr;
|
||||
mod cached_mappings;
|
||||
mod day1;
|
||||
mod day3;
|
||||
mod epoch;
|
||||
mod halving;
|
||||
mod height;
|
||||
mod hour1;
|
||||
mod hour12;
|
||||
mod hour4;
|
||||
mod minute10;
|
||||
mod minute30;
|
||||
mod month1;
|
||||
mod month3;
|
||||
mod month6;
|
||||
mod resolution;
|
||||
pub mod timestamp;
|
||||
mod tx_heights;
|
||||
mod tx_index;
|
||||
mod txin_index;
|
||||
mod txout_index;
|
||||
mod week1;
|
||||
mod year1;
|
||||
mod year10;
|
||||
|
||||
use std::path::Path;
|
||||
|
||||
@@ -28,36 +14,37 @@ use brk_error::Result;
|
||||
use brk_indexer::Indexer;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{
|
||||
Date, Day1, Day3, Height, Hour1, Hour4, Hour12, Indexes, Minute10, Minute30, Month1, Month3,
|
||||
Month6, Version, Week1, Year1, Year10,
|
||||
Date, Day1, Day3, Epoch, Halving, Height, Hour1, Hour4, Hour12, Indexes, Minute10, Minute30,
|
||||
Month1, Month3, Month6, Version, Week1, Year1, Year10,
|
||||
};
|
||||
use vecdb::{CachedVec, Database, Exit, ReadableVec, Rw, StorageMode};
|
||||
use vecdb::{Database, Exit, ReadableVec, Rw, StorageMode};
|
||||
|
||||
use crate::internal::db_utils::{finalize_db, open_db};
|
||||
|
||||
pub use addr::Vecs as AddrVecs;
|
||||
pub use cached_mappings::CachedMappings;
|
||||
pub use day1::Vecs as Day1Vecs;
|
||||
pub use day3::Vecs as Day3Vecs;
|
||||
pub use epoch::Vecs as EpochVecs;
|
||||
pub use halving::Vecs as HalvingVecs;
|
||||
pub use height::Vecs as HeightVecs;
|
||||
pub use hour1::Vecs as Hour1Vecs;
|
||||
pub use hour4::Vecs as Hour4Vecs;
|
||||
pub use hour12::Vecs as Hour12Vecs;
|
||||
pub use minute10::Vecs as Minute10Vecs;
|
||||
pub use minute30::Vecs as Minute30Vecs;
|
||||
pub use month1::Vecs as Month1Vecs;
|
||||
pub use month3::Vecs as Month3Vecs;
|
||||
pub use month6::Vecs as Month6Vecs;
|
||||
pub use resolution::{CachedResolutionVecs, DatedResolutionVecs, ResolutionVecs};
|
||||
pub use timestamp::Timestamps;
|
||||
pub use tx_heights::TxHeights;
|
||||
pub use tx_index::Vecs as TxIndexVecs;
|
||||
pub use txin_index::Vecs as TxInIndexVecs;
|
||||
pub use txout_index::Vecs as TxOutIndexVecs;
|
||||
pub use week1::Vecs as Week1Vecs;
|
||||
pub use year1::Vecs as Year1Vecs;
|
||||
pub use year10::Vecs as Year10Vecs;
|
||||
|
||||
pub type Minute10Vecs<M = Rw> = ResolutionVecs<Minute10, M>;
|
||||
pub type Minute30Vecs<M = Rw> = ResolutionVecs<Minute30, M>;
|
||||
pub type Hour1Vecs<M = Rw> = ResolutionVecs<Hour1, M>;
|
||||
pub type Hour4Vecs<M = Rw> = ResolutionVecs<Hour4, M>;
|
||||
pub type Hour12Vecs<M = Rw> = ResolutionVecs<Hour12, M>;
|
||||
pub type Day3Vecs<M = Rw> = ResolutionVecs<Day3, M>;
|
||||
pub type EpochVecs<M = Rw> = CachedResolutionVecs<Epoch, M>;
|
||||
pub type HalvingVecs<M = Rw> = CachedResolutionVecs<Halving, M>;
|
||||
pub type Week1Vecs<M = Rw> = DatedResolutionVecs<Week1, M>;
|
||||
pub type Month1Vecs<M = Rw> = DatedResolutionVecs<Month1, M>;
|
||||
pub type Month3Vecs<M = Rw> = DatedResolutionVecs<Month3, M>;
|
||||
pub type Month6Vecs<M = Rw> = DatedResolutionVecs<Month6, M>;
|
||||
pub type Year1Vecs<M = Rw> = DatedResolutionVecs<Year1, M>;
|
||||
pub type Year10Vecs<M = Rw> = DatedResolutionVecs<Year10, M>;
|
||||
|
||||
pub const DB_NAME: &str = "indexes";
|
||||
|
||||
@@ -65,8 +52,6 @@ pub const DB_NAME: &str = "indexes";
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
db: Database,
|
||||
#[traversable(skip)]
|
||||
pub cached_mappings: CachedMappings,
|
||||
#[traversable(skip)]
|
||||
pub tx_heights: TxHeights,
|
||||
pub addr: AddrVecs,
|
||||
pub height: HeightVecs<M>,
|
||||
@@ -103,50 +88,31 @@ impl Vecs {
|
||||
|
||||
let addr = AddrVecs::forced_import(version, indexer);
|
||||
let height = HeightVecs::forced_import(&db, version)?;
|
||||
let epoch = EpochVecs::forced_import(&db, version)?;
|
||||
let halving = HalvingVecs::forced_import(&db, version)?;
|
||||
let minute10 = Minute10Vecs::forced_import(&db, version)?;
|
||||
let minute30 = Minute30Vecs::forced_import(&db, version)?;
|
||||
let hour1 = Hour1Vecs::forced_import(&db, version)?;
|
||||
let hour4 = Hour4Vecs::forced_import(&db, version)?;
|
||||
let hour12 = Hour12Vecs::forced_import(&db, version)?;
|
||||
let epoch = CachedResolutionVecs::forced_import(&db, "epoch", version)?;
|
||||
let halving = CachedResolutionVecs::forced_import(&db, "halving", version)?;
|
||||
let minute10 = ResolutionVecs::forced_import(&db, "minute10_index", version)?;
|
||||
let minute30 = ResolutionVecs::forced_import(&db, "minute30_index", version)?;
|
||||
let hour1 = ResolutionVecs::forced_import(&db, "hour1_index", version)?;
|
||||
let hour4 = ResolutionVecs::forced_import(&db, "hour4_index", version)?;
|
||||
let hour12 = ResolutionVecs::forced_import(&db, "hour12_index", version)?;
|
||||
let day1 = Day1Vecs::forced_import(&db, version)?;
|
||||
let day3 = Day3Vecs::forced_import(&db, version)?;
|
||||
let week1 = Week1Vecs::forced_import(&db, version)?;
|
||||
let month1 = Month1Vecs::forced_import(&db, version)?;
|
||||
let month3 = Month3Vecs::forced_import(&db, version)?;
|
||||
let month6 = Month6Vecs::forced_import(&db, version)?;
|
||||
let year1 = Year1Vecs::forced_import(&db, version)?;
|
||||
let year10 = Year10Vecs::forced_import(&db, version)?;
|
||||
let day3 = ResolutionVecs::forced_import(&db, "day3_index", version)?;
|
||||
let week1 = DatedResolutionVecs::forced_import(&db, "week1_index", version)?;
|
||||
let month1 = DatedResolutionVecs::forced_import(&db, "month1_index", version)?;
|
||||
let month3 = DatedResolutionVecs::forced_import(&db, "month3_index", version)?;
|
||||
let month6 = DatedResolutionVecs::forced_import(&db, "month6_index", version)?;
|
||||
let year1 = DatedResolutionVecs::forced_import(&db, "year1_index", version)?;
|
||||
let year10 = DatedResolutionVecs::forced_import(&db, "year10_index", version)?;
|
||||
let tx_index = TxIndexVecs::forced_import(&db, version, indexer)?;
|
||||
let txin_index = TxInIndexVecs::forced_import(version, indexer);
|
||||
let txout_index = TxOutIndexVecs::forced_import(version, indexer);
|
||||
|
||||
let cached_mappings = CachedMappings {
|
||||
minute10_first_height: CachedVec::new(&minute10.first_height),
|
||||
minute30_first_height: CachedVec::new(&minute30.first_height),
|
||||
hour1_first_height: CachedVec::new(&hour1.first_height),
|
||||
hour4_first_height: CachedVec::new(&hour4.first_height),
|
||||
hour12_first_height: CachedVec::new(&hour12.first_height),
|
||||
day1_first_height: CachedVec::new(&day1.first_height),
|
||||
day3_first_height: CachedVec::new(&day3.first_height),
|
||||
week1_first_height: CachedVec::new(&week1.first_height),
|
||||
month1_first_height: CachedVec::new(&month1.first_height),
|
||||
month3_first_height: CachedVec::new(&month3.first_height),
|
||||
month6_first_height: CachedVec::new(&month6.first_height),
|
||||
year1_first_height: CachedVec::new(&year1.first_height),
|
||||
year10_first_height: CachedVec::new(&year10.first_height),
|
||||
halving_identity: CachedVec::new(&halving.identity),
|
||||
epoch_identity: CachedVec::new(&epoch.identity),
|
||||
};
|
||||
|
||||
let timestamp = Timestamps::forced_import_from_locals(
|
||||
&db, version, &minute10, &minute30, &hour1, &hour4, &hour12, &day1, &day3, &week1,
|
||||
&month1, &month3, &month6, &year1, &year10,
|
||||
)?;
|
||||
|
||||
let this = Self {
|
||||
cached_mappings,
|
||||
tx_heights: TxHeights::init(indexer),
|
||||
addr,
|
||||
height,
|
||||
@@ -200,7 +166,7 @@ impl Vecs {
|
||||
let starting_day1 =
|
||||
self.compute_calendar_mappings(indexer, &starting_indexes, prev_height, exit)?;
|
||||
|
||||
self.compute_period_vecs(indexer, &starting_indexes, prev_height, starting_day1, exit)?;
|
||||
self.compute_period_vecs(&starting_indexes, prev_height, starting_day1, exit)?;
|
||||
|
||||
self.timestamp.compute_per_resolution(
|
||||
indexer,
|
||||
@@ -380,23 +346,16 @@ impl Vecs {
|
||||
&indexer.vecs.blocks.weight,
|
||||
exit,
|
||||
)?;
|
||||
self.epoch.first_height.compute_first_per_index(
|
||||
self.epoch.first_height.inner.compute_first_per_index(
|
||||
starting_indexes.height,
|
||||
&self.height.epoch,
|
||||
exit,
|
||||
)?;
|
||||
self.epoch.identity.compute_from_index(
|
||||
self.epoch.identity.inner.compute_from_index(
|
||||
starting_difficulty,
|
||||
&self.epoch.first_height,
|
||||
exit,
|
||||
)?;
|
||||
self.epoch.height_count.compute_count_from_indexes(
|
||||
starting_difficulty,
|
||||
&self.epoch.first_height,
|
||||
&self.timestamp.monotonic,
|
||||
exit,
|
||||
)?;
|
||||
|
||||
let starting_halving = self
|
||||
.height
|
||||
.halving
|
||||
@@ -408,12 +367,12 @@ impl Vecs {
|
||||
&indexer.vecs.blocks.weight,
|
||||
exit,
|
||||
)?;
|
||||
self.halving.first_height.compute_first_per_index(
|
||||
self.halving.first_height.inner.compute_first_per_index(
|
||||
starting_indexes.height,
|
||||
&self.height.halving,
|
||||
exit,
|
||||
)?;
|
||||
self.halving.identity.compute_from_index(
|
||||
self.halving.identity.inner.compute_from_index(
|
||||
starting_halving,
|
||||
&self.halving.first_height,
|
||||
exit,
|
||||
@@ -424,7 +383,6 @@ impl Vecs {
|
||||
|
||||
fn compute_period_vecs(
|
||||
&mut self,
|
||||
indexer: &Indexer,
|
||||
starting_indexes: &Indexes,
|
||||
prev_height: Height,
|
||||
starting_day1: Day1,
|
||||
@@ -432,7 +390,7 @@ impl Vecs {
|
||||
) -> Result<()> {
|
||||
macro_rules! basic_period {
|
||||
($period:ident) => {
|
||||
self.$period.first_height.compute_first_per_index(
|
||||
self.$period.first_height.inner.compute_first_per_index(
|
||||
starting_indexes.height,
|
||||
&self.height.$period,
|
||||
exit,
|
||||
@@ -455,7 +413,7 @@ impl Vecs {
|
||||
basic_period!(hour12);
|
||||
basic_period!(day3);
|
||||
|
||||
self.day1.first_height.compute_first_per_index(
|
||||
self.day1.first_height.inner.compute_first_per_index(
|
||||
starting_indexes.height,
|
||||
&self.height.day1,
|
||||
exit,
|
||||
@@ -469,18 +427,11 @@ impl Vecs {
|
||||
|(di, ..)| (di, Date::from(di)),
|
||||
exit,
|
||||
)?;
|
||||
self.day1.height_count.compute_count_from_indexes(
|
||||
starting_day1,
|
||||
&self.day1.first_height,
|
||||
&indexer.vecs.blocks.weight,
|
||||
exit,
|
||||
)?;
|
||||
|
||||
let ts = &self.timestamp.monotonic;
|
||||
|
||||
macro_rules! dated_period {
|
||||
($period:ident) => {{
|
||||
self.$period.first_height.compute_first_per_index(
|
||||
self.$period.first_height.inner.compute_first_per_index(
|
||||
starting_indexes.height,
|
||||
&self.height.$period,
|
||||
exit,
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Month1, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Month1, Month1>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Month1, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Month1, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "month1_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Month3, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Month3, Month3>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Month3, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Month3, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "month3_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Month6, Version};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Month6, Month6>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Month6, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Month6, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "month6_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Version};
|
||||
use vecdb::{
|
||||
CachedVec, Database, EagerVec, ImportableVec, PcoVec, PcoVecValue, Rw, StorageMode, VecIndex,
|
||||
};
|
||||
|
||||
/// Resolution with identity mapping and cached first-height lookup.
|
||||
#[derive(Traversable)]
|
||||
pub struct ResolutionVecs<I: VecIndex + PcoVecValue, M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<I, I>>>,
|
||||
pub first_height: CachedVec<M::Stored<EagerVec<PcoVec<I, Height>>>>,
|
||||
}
|
||||
|
||||
/// Resolution with both identity and first-height cached (halving, epoch).
|
||||
#[derive(Traversable)]
|
||||
pub struct CachedResolutionVecs<I: VecIndex + PcoVecValue, M: StorageMode = Rw> {
|
||||
pub identity: CachedVec<M::Stored<EagerVec<PcoVec<I, I>>>>,
|
||||
pub first_height: CachedVec<M::Stored<EagerVec<PcoVec<I, Height>>>>,
|
||||
}
|
||||
|
||||
impl<I: VecIndex + PcoVecValue> CachedResolutionVecs<I> {
|
||||
pub(crate) fn forced_import(
|
||||
db: &Database,
|
||||
identity_name: &str,
|
||||
version: Version,
|
||||
) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: CachedVec::wrap(EagerVec::forced_import(db, identity_name, version)?),
|
||||
first_height: CachedVec::wrap(EagerVec::forced_import(db, "first_height", version)?),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<I: VecIndex + PcoVecValue> ResolutionVecs<I> {
|
||||
pub(crate) fn forced_import(
|
||||
db: &Database,
|
||||
identity_name: &str,
|
||||
version: Version,
|
||||
) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, identity_name, version)?,
|
||||
first_height: CachedVec::wrap(EagerVec::forced_import(db, "first_height", version)?),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// Resolution with identity, date, and cached first-height lookup.
|
||||
#[derive(Traversable)]
|
||||
pub struct DatedResolutionVecs<I: VecIndex + PcoVecValue, M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<I, I>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<I, Date>>>,
|
||||
pub first_height: CachedVec<M::Stored<EagerVec<PcoVec<I, Height>>>>,
|
||||
}
|
||||
|
||||
impl<I: VecIndex + PcoVecValue> DatedResolutionVecs<I> {
|
||||
pub(crate) fn forced_import(
|
||||
db: &Database,
|
||||
identity_name: &str,
|
||||
version: Version,
|
||||
) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, identity_name, version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: CachedVec::wrap(EagerVec::forced_import(db, "first_height", version)?),
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,8 @@ use brk_types::{
|
||||
};
|
||||
use derive_more::{Deref, DerefMut};
|
||||
use vecdb::{
|
||||
Database, EagerVec, Exit, ImportableVec, LazyVecFrom1, PcoVec, ReadableCloneableVec,
|
||||
ReadableVec, Rw, StorageMode, Version,
|
||||
Database, EagerVec, Exit, ImportableVec, LazyVecFrom1, PcoVec, ReadableVec, Rw, StorageMode,
|
||||
Version,
|
||||
};
|
||||
|
||||
use crate::internal::PerResolution;
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Version, Week1};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Week1, Week1>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Week1, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Week1, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "week1_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Version, Year1};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Year1, Year1>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Year1, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Year1, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "year1_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Date, Height, Version, Year10};
|
||||
use vecdb::{Database, EagerVec, ImportableVec, PcoVec, Rw, StorageMode};
|
||||
|
||||
use brk_error::Result;
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub identity: M::Stored<EagerVec<PcoVec<Year10, Year10>>>,
|
||||
pub date: M::Stored<EagerVec<PcoVec<Year10, Date>>>,
|
||||
pub first_height: M::Stored<EagerVec<PcoVec<Year10, Height>>>,
|
||||
}
|
||||
|
||||
impl Vecs {
|
||||
pub(crate) fn forced_import(db: &Database, version: Version) -> Result<Self> {
|
||||
Ok(Self {
|
||||
identity: EagerVec::forced_import(db, "year10_index", version)?,
|
||||
date: EagerVec::forced_import(db, "date", version)?,
|
||||
first_height: EagerVec::forced_import(db, "first_height", version)?,
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user