computer: part 6

This commit is contained in:
nym21
2025-04-07 12:18:18 +02:00
parent 1639df5616
commit 4c7e9fbee2
27 changed files with 887 additions and 341 deletions

View File

@@ -13,9 +13,9 @@ pub struct Stores {
impl Stores {
pub fn import(path: &Path) -> color_eyre::Result<Self> {
let address_to_utxos_received =
Store::import(&path.join("address_to_utxos_received"), Version::ONE)?;
Store::import(&path.join("address_to_utxos_received"), Version::ZERO)?;
let address_to_utxos_spent =
Store::import(&path.join("address_to_utxos_spent"), Version::ONE)?;
Store::import(&path.join("address_to_utxos_spent"), Version::ZERO)?;
Ok(Self {
address_to_utxos_received,

View File

@@ -31,7 +31,7 @@ where
version: Version,
compressed: Compressed,
) -> brk_vec::Result<Self> {
let vec = brk_vec::StorableVec::forced_import(path, version, compressed)?;
let vec = StorableVec::forced_import(path, version, compressed)?;
Ok(Self {
computed_version: None,
@@ -88,11 +88,11 @@ where
self.vec.len()
}
pub fn vec(&self) -> &brk_vec::StorableVec<I, T> {
pub fn vec(&self) -> &StorableVec<I, T> {
&self.vec
}
pub fn mut_vec(&mut self) -> &mut brk_vec::StorableVec<I, T> {
pub fn mut_vec(&mut self) -> &mut StorableVec<I, T> {
&mut self.vec
}
@@ -129,14 +129,14 @@ where
pub fn compute_transform<A, B, F>(
&mut self,
max_from: A,
other: &mut brk_vec::StorableVec<A, B>,
other: &mut StorableVec<A, B>,
mut t: F,
exit: &Exit,
) -> Result<()>
where
A: StoredIndex,
B: StoredType,
F: FnMut((A, B, &mut Self, &mut brk_vec::StorableVec<A, B>)) -> (I, T),
F: FnMut((A, B, &mut Self, &mut StorableVec<A, B>)) -> (I, T),
{
self.validate_computed_version_or_reset_file(
Version::ZERO + self.version() + other.version(),
@@ -154,7 +154,7 @@ where
pub fn compute_inverse_more_to_less(
&mut self,
max_from: T,
other: &mut brk_vec::StorableVec<T, I>,
other: &mut StorableVec<T, I>,
exit: &Exit,
) -> Result<()>
where
@@ -181,8 +181,8 @@ where
pub fn compute_inverse_less_to_more(
&mut self,
max_from: T,
first_indexes: &mut brk_vec::StorableVec<T, I>,
last_indexes: &mut brk_vec::StorableVec<T, I>,
first_indexes: &mut StorableVec<T, I>,
last_indexes: &mut StorableVec<T, I>,
exit: &Exit,
) -> Result<()>
where
@@ -207,7 +207,7 @@ where
pub fn compute_last_index_from_first(
&mut self,
max_from: I,
first_indexes: &mut brk_vec::StorableVec<I, T>,
first_indexes: &mut StorableVec<I, T>,
final_len: usize,
exit: &Exit,
) -> Result<()>
@@ -242,8 +242,8 @@ where
pub fn compute_count_from_indexes<T2>(
&mut self,
max_from: I,
first_indexes: &mut brk_vec::StorableVec<I, T2>,
last_indexes: &mut brk_vec::StorableVec<I, T2>,
first_indexes: &mut StorableVec<I, T2>,
last_indexes: &mut StorableVec<I, T2>,
exit: &Exit,
) -> Result<()>
where
@@ -270,8 +270,8 @@ where
pub fn compute_is_first_ordered<A>(
&mut self,
max_from: I,
self_to_other: &mut brk_vec::StorableVec<I, A>,
other_to_self: &mut brk_vec::StorableVec<A, I>,
self_to_other: &mut StorableVec<I, A>,
other_to_self: &mut StorableVec<A, I>,
exit: &Exit,
) -> Result<()>
where
@@ -294,8 +294,8 @@ where
pub fn compute_sum_from_indexes<T2>(
&mut self,
max_from: I,
first_indexes: &mut brk_vec::StorableVec<I, T2>,
last_indexes: &mut brk_vec::StorableVec<I, T2>,
first_indexes: &mut StorableVec<I, T2>,
last_indexes: &mut StorableVec<I, T2>,
exit: &Exit,
) -> Result<()>
where

View File

@@ -1,6 +1,6 @@
use std::{fs, path::Path};
use brk_core::{CheckedSub, CounterU32, Timestamp};
use brk_core::{CheckedSub, StoredU32, StoredUsize, Timestamp, Weight};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Version};
@@ -14,7 +14,10 @@ use super::{
#[derive(Clone)]
pub struct Vecs {
pub indexes_to_block_interval: ComputedVecsFromHeight<Timestamp>,
pub indexes_to_block_count: ComputedVecsFromHeight<CounterU32>,
pub indexes_to_block_count: ComputedVecsFromHeight<StoredU32>,
pub indexes_to_block_weight: ComputedVecsFromHeight<Weight>,
// pub indexes_to_block_vbytes: ComputedVecsFromHeight<>,
pub indexes_to_block_size: ComputedVecsFromHeight<StoredUsize>,
}
impl Vecs {
@@ -25,7 +28,8 @@ impl Vecs {
indexes_to_block_interval: ComputedVecsFromHeight::forced_import(
path,
"block_interval",
Version::ONE,
true,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default()
.add_percentiles()
@@ -35,7 +39,24 @@ impl Vecs {
indexes_to_block_count: ComputedVecsFromHeight::forced_import(
path,
"block_count",
Version::ONE,
true,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_sum().add_total(),
)?,
indexes_to_block_weight: ComputedVecsFromHeight::forced_import(
path,
"block_weight",
false,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_sum().add_total(),
)?,
indexes_to_block_size: ComputedVecsFromHeight::forced_import(
path,
"block_size",
false,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_sum().add_total(),
)?,
@@ -85,12 +106,46 @@ impl Vecs {
v.compute_transform(
starting_indexes.height,
indexer_vecs.height_to_weight.mut_vec(),
|(h, ..)| (h, CounterU32::from(1_u32)),
|(h, ..)| (h, StoredU32::from(1_u32)),
exit,
)
},
)?;
self.indexes_to_block_weight.compute(
indexer,
indexes,
starting_indexes,
exit,
|v, indexer, _, starting_indexes, exit| {
let indexer_vecs = indexer.mut_vecs();
v.compute_transform(
starting_indexes.height,
indexer_vecs.height_to_weight.mut_vec(),
|(h, w)| (h, w),
exit,
)
},
)?;
// self.indexes_to_block_size.compute(
// indexer,
// indexes,
// starting_indexes,
// exit,
// |v, indexer, _, starting_indexes, exit| {
// let indexer_vecs = indexer.mut_vecs();
// v.compute_transform(
// starting_indexes.height,
// indexer_vecs.height_to_weight.mut_vec(),
// |(h, ..)| (h, StoredU32::from(1_u32)),
// exit,
// )
// },
// )?;
Ok(())
}
@@ -98,6 +153,8 @@ impl Vecs {
[
self.indexes_to_block_interval.any_vecs(),
self.indexes_to_block_count.any_vecs(),
self.indexes_to_block_weight.any_vecs(),
self.indexes_to_block_size.any_vecs(),
]
.concat()
}

View File

@@ -1,9 +1,10 @@
use std::path::Path;
use brk_exit::Exit;
use brk_indexer::{Indexer, Indexes};
use brk_vec::{AnyStorableVec, Compressed, Result, StorableVec, StoredIndex, StoredType, Version};
use crate::storage::vecs::base::ComputedVec;
use crate::storage::vecs::{base::ComputedVec, indexes};
use super::ComputedType;
@@ -66,48 +67,48 @@ where
let s = Self {
first: options.first.then(|| {
ComputedVec::forced_import(&maybe_prefix("first"), Version::ONE, compressed)
ComputedVec::forced_import(&maybe_prefix("first"), Version::ZERO, compressed)
.unwrap()
}),
last: options.last.then(|| {
ComputedVec::forced_import(
&path.join(format!("{key}_to_{name}")),
Version::ONE,
Version::ZERO,
compressed,
)
.unwrap()
}),
min: options.min.then(|| {
ComputedVec::forced_import(&maybe_suffix("min"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("min"), Version::ZERO, compressed).unwrap()
}),
max: options.max.then(|| {
ComputedVec::forced_import(&maybe_suffix("max"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("max"), Version::ZERO, compressed).unwrap()
}),
median: options.median.then(|| {
ComputedVec::forced_import(&maybe_suffix("median"), Version::ONE, compressed)
ComputedVec::forced_import(&maybe_suffix("median"), Version::ZERO, compressed)
.unwrap()
}),
average: options.average.then(|| {
ComputedVec::forced_import(&maybe_suffix("average"), Version::ONE, compressed)
ComputedVec::forced_import(&maybe_suffix("average"), Version::ZERO, compressed)
.unwrap()
}),
sum: options.sum.then(|| {
ComputedVec::forced_import(&maybe_suffix("sum"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("sum"), Version::ZERO, compressed).unwrap()
}),
total: options.total.then(|| {
ComputedVec::forced_import(&prefix("total"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&prefix("total"), Version::ZERO, compressed).unwrap()
}),
_90p: options._90p.then(|| {
ComputedVec::forced_import(&maybe_suffix("90p"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("90p"), Version::ZERO, compressed).unwrap()
}),
_75p: options._75p.then(|| {
ComputedVec::forced_import(&maybe_suffix("75p"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("75p"), Version::ZERO, compressed).unwrap()
}),
_25p: options._25p.then(|| {
ComputedVec::forced_import(&maybe_suffix("25p"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("25p"), Version::ZERO, compressed).unwrap()
}),
_10p: options._10p.then(|| {
ComputedVec::forced_import(&maybe_suffix("10p"), Version::ONE, compressed).unwrap()
ComputedVec::forced_import(&maybe_suffix("10p"), Version::ZERO, compressed).unwrap()
}),
};
@@ -154,9 +155,9 @@ where
pub fn compute<I2>(
&mut self,
max_from: I,
source: &mut ComputedVec<I2, T>,
first_indexes: &mut brk_vec::StorableVec<I, I2>,
last_indexes: &mut brk_vec::StorableVec<I, I2>,
source: &mut StorableVec<I2, T>,
first_indexes: &mut StorableVec<I, I2>,
last_indexes: &mut StorableVec<I, I2>,
exit: &Exit,
) -> Result<()>
where
@@ -276,8 +277,8 @@ where
&mut self,
max_from: I,
source: &mut ComputedVecBuilder<I2, T>,
first_indexes: &mut brk_vec::StorableVec<I, I2>,
last_indexes: &mut brk_vec::StorableVec<I, I2>,
first_indexes: &mut StorableVec<I, I2>,
last_indexes: &mut StorableVec<I, I2>,
exit: &Exit,
) -> Result<()>
where
@@ -698,3 +699,17 @@ impl StorableVecGeneatorOptions {
}
}
}
pub enum Source<'a, F, I, T>
where
F: FnMut(
&mut ComputedVec<I, T>,
&mut Indexer,
&mut indexes::Vecs,
&Indexes,
&Exit,
) -> Result<()>,
{
Compute(F),
Ref(&'a mut StorableVec<I, T>),
}

View File

@@ -85,7 +85,7 @@ where
self.weekindex.compute(
starting_indexes.weekindex,
&mut self.dateindex,
self.dateindex.mut_vec(),
indexes.weekindex_to_first_dateindex.mut_vec(),
indexes.weekindex_to_last_dateindex.mut_vec(),
exit,
@@ -93,7 +93,7 @@ where
self.monthindex.compute(
starting_indexes.monthindex,
&mut self.dateindex,
self.dateindex.mut_vec(),
indexes.monthindex_to_first_dateindex.mut_vec(),
indexes.monthindex_to_last_dateindex.mut_vec(),
exit,

View File

@@ -16,7 +16,7 @@ pub struct ComputedVecsFromHeight<T>
where
T: ComputedType + PartialOrd,
{
pub height: ComputedVec<Height, T>,
pub height: Option<ComputedVec<Height, T>>,
pub height_extra: ComputedVecBuilder<Height, T>,
pub dateindex: ComputedVecBuilder<Dateindex, T>,
pub weekindex: ComputedVecBuilder<Weekindex, T>,
@@ -36,15 +36,15 @@ where
pub fn forced_import(
path: &Path,
name: &str,
compute_source: bool,
version: Version,
compressed: Compressed,
options: StorableVecGeneatorOptions,
) -> color_eyre::Result<Self> {
let height = ComputedVec::forced_import(
&path.join(format!("height_to_{name}")),
version,
compressed,
)?;
let height = compute_source.then(|| {
ComputedVec::forced_import(&path.join(format!("height_to_{name}")), version, compressed)
.unwrap()
});
let height_extra =
ComputedVecBuilder::forced_import(path, name, compressed, options.copy_self_extra())?;
@@ -84,14 +84,16 @@ where
&Exit,
) -> Result<()>,
{
compute(&mut self.height, indexer, indexes, starting_indexes, exit)?;
if let Some(height) = self.height.as_mut() {
compute(height, indexer, indexes, starting_indexes, exit)?;
}
self.height_extra
.extend(starting_indexes.height, self.height.mut_vec(), exit)?;
self.dateindex.compute(
starting_indexes.dateindex,
&mut self.height,
self.height.mut_vec(),
indexes.dateindex_to_first_height.mut_vec(),
indexes.dateindex_to_last_height.mut_vec(),
exit,

View File

@@ -75,7 +75,7 @@ where
self.difficultyepoch.compute(
starting_indexes.difficultyepoch,
&mut self.height,
self.height.mut_vec(),
indexes.difficultyepoch_to_first_height.mut_vec(),
indexes.difficultyepoch_to_last_height.mut_vec(),
exit,

View File

@@ -99,7 +99,7 @@ where
self.height.compute(
starting_indexes.height,
&mut self.txindex,
self.txindex.mut_vec(),
indexer.mut_vecs().height_to_first_txindex.mut_vec(),
indexes.height_to_last_txindex.mut_vec(),
exit,

View File

@@ -71,242 +71,242 @@ impl Vecs {
Ok(Self {
dateindex_to_date: ComputedVec::forced_import(
&path.join("dateindex_to_date"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_dateindex: ComputedVec::forced_import(
&path.join("dateindex_to_dateindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_first_height: ComputedVec::forced_import(
&path.join("dateindex_to_first_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_last_height: ComputedVec::forced_import(
&path.join("dateindex_to_last_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_real_date: ComputedVec::forced_import(
&path.join("height_to_real_date"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_fixed_date: ComputedVec::forced_import(
&path.join("height_to_fixed_date"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_dateindex: ComputedVec::forced_import(
&path.join("height_to_dateindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_height: ComputedVec::forced_import(
&path.join("height_to_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_last_txindex: ComputedVec::forced_import(
&path.join("height_to_last_txindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
txindex_to_last_txinindex: ComputedVec::forced_import(
&path.join("txindex_to_last_txinindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
txindex_to_last_txoutindex: ComputedVec::forced_import(
&path.join("txindex_to_last_txoutindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
difficultyepoch_to_first_height: ComputedVec::forced_import(
&path.join("difficultyepoch_to_first_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
difficultyepoch_to_last_height: ComputedVec::forced_import(
&path.join("difficultyepoch_to_last_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
halvingepoch_to_first_height: ComputedVec::forced_import(
&path.join("halvingepoch_to_first_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
halvingepoch_to_last_height: ComputedVec::forced_import(
&path.join("halvingepoch_to_last_height"),
Version::ONE,
Version::ZERO,
compressed,
)?,
weekindex_to_first_dateindex: ComputedVec::forced_import(
&path.join("weekindex_to_first_dateindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
weekindex_to_last_dateindex: ComputedVec::forced_import(
&path.join("weekindex_to_last_dateindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_first_dateindex: ComputedVec::forced_import(
&path.join("monthindex_to_first_dateindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_last_dateindex: ComputedVec::forced_import(
&path.join("monthindex_to_last_dateindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
yearindex_to_first_monthindex: ComputedVec::forced_import(
&path.join("yearindex_to_first_monthindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
yearindex_to_last_monthindex: ComputedVec::forced_import(
&path.join("yearindex_to_last_monthindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
decadeindex_to_first_yearindex: ComputedVec::forced_import(
&path.join("decadeindex_to_first_yearindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
decadeindex_to_last_yearindex: ComputedVec::forced_import(
&path.join("decadeindex_to_last_yearindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_weekindex: ComputedVec::forced_import(
&path.join("dateindex_to_weekindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_monthindex: ComputedVec::forced_import(
&path.join("dateindex_to_monthindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_yearindex: ComputedVec::forced_import(
&path.join("monthindex_to_yearindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
yearindex_to_decadeindex: ComputedVec::forced_import(
&path.join("yearindex_to_decadeindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_difficultyepoch: ComputedVec::forced_import(
&path.join("height_to_difficultyepoch"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_halvingepoch: ComputedVec::forced_import(
&path.join("height_to_halvingepoch"),
Version::ONE,
Version::ZERO,
compressed,
)?,
weekindex_to_weekindex: ComputedVec::forced_import(
&path.join("weekindex_to_weekindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_monthindex: ComputedVec::forced_import(
&path.join("monthindex_to_monthindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
yearindex_to_yearindex: ComputedVec::forced_import(
&path.join("yearindex_to_yearindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
decadeindex_to_decadeindex: ComputedVec::forced_import(
&path.join("decadeindex_to_decadeindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
difficultyepoch_to_difficultyepoch: ComputedVec::forced_import(
&path.join("difficultyepoch_to_difficultyepoch"),
Version::ONE,
Version::ZERO,
compressed,
)?,
halvingepoch_to_halvingepoch: ComputedVec::forced_import(
&path.join("halvingepoch_to_halvingepoch"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_timestamp: ComputedVec::forced_import(
&path.join("dateindex_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
decadeindex_to_timestamp: ComputedVec::forced_import(
&path.join("decadeindex_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
difficultyepoch_to_timestamp: ComputedVec::forced_import(
&path.join("difficultyepoch_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
halvingepoch_to_timestamp: ComputedVec::forced_import(
&path.join("halvingepoch_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_timestamp: ComputedVec::forced_import(
&path.join("monthindex_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
weekindex_to_timestamp: ComputedVec::forced_import(
&path.join("weekindex_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
yearindex_to_timestamp: ComputedVec::forced_import(
&path.join("yearindex_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_fixed_timestamp: ComputedVec::forced_import(
&path.join("height_to_fixed_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_quarterindex: ComputedVec::forced_import(
&path.join("monthindex_to_quarterindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
quarterindex_to_first_monthindex: ComputedVec::forced_import(
&path.join("quarterindex_to_first_monthindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
quarterindex_to_last_monthindex: ComputedVec::forced_import(
&path.join("quarterindex_to_last_monthindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
quarterindex_to_quarterindex: ComputedVec::forced_import(
&path.join("quarterindex_to_quarterindex"),
Version::ONE,
Version::ZERO,
compressed,
)?,
quarterindex_to_timestamp: ComputedVec::forced_import(
&path.join("quarterindex_to_timestamp"),
Version::ONE,
Version::ZERO,
compressed,
)?,
})

View File

@@ -63,163 +63,163 @@ impl Vecs {
Ok(Self {
dateindex_to_ohlc_in_cents: ComputedVec::forced_import(
&fetched_path.join("dateindex_to_ohlc_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_ohlc: ComputedVec::forced_import(
&path.join("dateindex_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_close_in_cents: ComputedVec::forced_import(
&path.join("dateindex_to_close_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_high_in_cents: ComputedVec::forced_import(
&path.join("dateindex_to_high_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_low_in_cents: ComputedVec::forced_import(
&path.join("dateindex_to_low_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
dateindex_to_open_in_cents: ComputedVec::forced_import(
&path.join("dateindex_to_open_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_ohlc_in_cents: ComputedVec::forced_import(
&fetched_path.join("height_to_ohlc_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_ohlc: ComputedVec::forced_import(
&path.join("height_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_close_in_cents: ComputedVec::forced_import(
&path.join("height_to_close_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_high_in_cents: ComputedVec::forced_import(
&path.join("height_to_high_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_low_in_cents: ComputedVec::forced_import(
&path.join("height_to_low_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
height_to_open_in_cents: ComputedVec::forced_import(
&path.join("height_to_open_in_cents"),
Version::ONE,
Version::ZERO,
compressed,
)?,
timeindexes_to_open: ComputedVecsFromDateindex::forced_import(
path,
"open",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_first(),
)?,
timeindexes_to_high: ComputedVecsFromDateindex::forced_import(
path,
"high",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_max(),
)?,
timeindexes_to_low: ComputedVecsFromDateindex::forced_import(
path,
"low",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_min(),
)?,
timeindexes_to_close: ComputedVecsFromDateindex::forced_import(
path,
"close",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_last(),
)?,
timeindexes_to_sats_per_dollar: ComputedVecsFromDateindex::forced_import(
path,
"sats_per_dollar",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_last(),
)?,
chainindexes_to_open: ComputedVecsFromHeightStrict::forced_import(
path,
"open",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_first(),
)?,
chainindexes_to_high: ComputedVecsFromHeightStrict::forced_import(
path,
"high",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_max(),
)?,
chainindexes_to_low: ComputedVecsFromHeightStrict::forced_import(
path,
"low",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_min(),
)?,
chainindexes_to_close: ComputedVecsFromHeightStrict::forced_import(
path,
"close",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_last(),
)?,
chainindexes_to_sats_per_dollar: ComputedVecsFromHeightStrict::forced_import(
path,
"sats_per_dollar",
Version::ONE,
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_last(),
)?,
weekindex_to_ohlc: ComputedVec::forced_import(
&path.join("weekindex_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
difficultyepoch_to_ohlc: ComputedVec::forced_import(
&path.join("difficultyepoch_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
monthindex_to_ohlc: ComputedVec::forced_import(
&path.join("monthindex_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
quarterindex_to_ohlc: ComputedVec::forced_import(
&path.join("quarterindex_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
yearindex_to_ohlc: ComputedVec::forced_import(
&path.join("yearindex_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
// halvingepoch_to_ohlc: StorableVec::forced_import(&path.join("halvingepoch_to_ohlc"), Version::ONE, compressed)?,
// halvingepoch_to_ohlc: StorableVec::forced_import(&path.join("halvingepoch_to_ohlc"), Version::ZERO, compressed)?,
decadeindex_to_ohlc: ComputedVec::forced_import(
&path.join("decadeindex_to_ohlc"),
Version::ONE,
Version::ZERO,
compressed,
)?,
})

View File

@@ -1,6 +1,6 @@
use std::{fs, path::Path};
use brk_core::{CounterU64, Txindex};
use brk_core::{StoredU64, Txindex};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Version};
@@ -25,10 +25,10 @@ pub struct Vecs {
// pub txindex_to_fee: ComputedVec<Txindex, Sats>,
pub txindex_to_is_coinbase: ComputedVec<Txindex, bool>,
// pub txindex_to_feerate: ComputedVec<Txindex, Feerate>,
pub txindex_to_inputs_count: ComputedVecsFromTxindex<CounterU64>,
// pub txindex_to_inputs_sum: ComputedVec<Txindex, Sats>,
pub txindex_to_outputs_count: ComputedVecsFromTxindex<CounterU64>,
// pub txindex_to_outputs_sum: ComputedVec<Txindex, Sats>,
pub txindex_to_input_count: ComputedVecsFromTxindex<StoredU64>,
// pub txindex_to_input_sum: ComputedVec<Txindex, Sats>,
pub txindex_to_output_count: ComputedVecsFromTxindex<StoredU64>,
// pub txindex_to_output_sum: ComputedVec<Txindex, Sats>,
// pub txinindex_to_value: ComputedVec<Txinindex, Sats>,
}
@@ -37,48 +37,48 @@ impl Vecs {
fs::create_dir_all(path)?;
Ok(Self {
// height_to_fee: StorableVec::forced_import(&path.join("height_to_fee"), Version::ONE)?,
// height_to_fee: StorableVec::forced_import(&path.join("height_to_fee"), Version::ZERO)?,
// height_to_input_count: StorableVec::forced_import(
// &path.join("height_to_input_count"),
// Version::ONE,
// Version::ZERO,
// )?,
// height_to_maxfeerate: StorableVec::forced_import(&path.join("height_to_maxfeerate"), Version::ONE)?,
// height_to_medianfeerate: StorableVec::forced_import(&path.join("height_to_medianfeerate"), Version::ONE)?,
// height_to_minfeerate: StorableVec::forced_import(&path.join("height_to_minfeerate"), Version::ONE)?,
// height_to_maxfeerate: StorableVec::forced_import(&path.join("height_to_maxfeerate"), Version::ZERO)?,
// height_to_medianfeerate: StorableVec::forced_import(&path.join("height_to_medianfeerate"), Version::ZERO)?,
// height_to_minfeerate: StorableVec::forced_import(&path.join("height_to_minfeerate"), Version::ZERO)?,
// height_to_output_count: StorableVec::forced_import(
// &path.join("height_to_output_count"),
// Version::ONE,
// Version::ZERO,
// )?,
// height_to_subsidy: StorableVec::forced_import(&path.join("height_to_subsidy"), Version::ONE)?,
// height_to_totalfees: StorableVec::forced_import(&path.join("height_to_totalfees"), Version::ONE)?,
// height_to_txcount: StorableVec::forced_import(&path.join("height_to_txcount"), Version::ONE)?,
// height_to_subsidy: StorableVec::forced_import(&path.join("height_to_subsidy"), Version::ZERO)?,
// height_to_totalfees: StorableVec::forced_import(&path.join("height_to_totalfees"), Version::ZERO)?,
// height_to_txcount: StorableVec::forced_import(&path.join("height_to_txcount"), Version::ZERO)?,
// txindex_to_fee: StorableVec::forced_import(
// &path.join("txindex_to_fee"),
// Version::ONE,
// Version::ZERO,
// )?,
txindex_to_is_coinbase: ComputedVec::forced_import(
&path.join("txindex_to_is_coinbase"),
Version::ONE,
Version::ZERO,
compressed,
)?,
// txindex_to_feerate: StorableVec::forced_import(&path.join("txindex_to_feerate"), Version::ONE)?,
txindex_to_inputs_count: ComputedVecsFromTxindex::forced_import(
// txindex_to_feerate: StorableVec::forced_import(&path.join("txindex_to_feerate"), Version::ZERO)?,
txindex_to_input_count: ComputedVecsFromTxindex::forced_import(
path,
"inputs_count",
Version::ONE,
"input_count",
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_sum().add_total(),
)?,
txindex_to_outputs_count: ComputedVecsFromTxindex::forced_import(
txindex_to_output_count: ComputedVecsFromTxindex::forced_import(
path,
"outputs_count",
Version::ONE,
"output_count",
Version::ZERO,
compressed,
StorableVecGeneatorOptions::default().add_sum().add_total(),
)?,
// txinindex_to_value: StorableVec::forced_import(
// &path.join("txinindex_to_value"),
// Version::ONE,
// Version::ZERO,
// compressed,
// )?,
})
@@ -91,7 +91,7 @@ impl Vecs {
starting_indexes: &Indexes,
exit: &Exit,
) -> color_eyre::Result<()> {
self.txindex_to_inputs_count.compute(
self.txindex_to_input_count.compute(
indexer,
indexes,
starting_indexes,
@@ -106,7 +106,7 @@ impl Vecs {
},
)?;
self.txindex_to_outputs_count.compute(
self.txindex_to_output_count.compute(
indexer,
indexes,
starting_indexes,
@@ -121,20 +121,6 @@ impl Vecs {
},
)?;
// self.txindex_to_inputs_count.compute_count_from_indexes(
// starting_indexes.txindex,
// indexer_vecs.txindex_to_first_txinindex.mut_vec(),
// indexes.txindex_to_last_txinindex.mut_vec(),
// exit,
// )?;
// self.txindex_to_outputs_count.compute_count_from_indexes(
// starting_indexes.txindex,
// indexer_vecs.txindex_to_first_txoutindex.mut_vec(),
// indexes.txindex_to_last_txoutindex.mut_vec(),
// exit,
// )?;
let indexer_vecs = indexer.mut_vecs();
self.txindex_to_is_coinbase.compute_is_first_ordered(
@@ -171,8 +157,8 @@ impl Vecs {
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
[
vec![self.txindex_to_is_coinbase.any_vec()],
self.txindex_to_outputs_count.any_vecs(),
self.txindex_to_inputs_count.any_vecs(),
self.txindex_to_output_count.any_vecs(),
self.txindex_to_input_count.any_vecs(),
]
.concat()
}