Files
brk/crates/brk_computer/src/transactions/compute.rs
2026-02-23 17:22:12 +01:00

61 lines
1.4 KiB
Rust

use brk_error::Result;
use brk_indexer::Indexer;
use vecdb::Exit;
use crate::{blocks, indexes, inputs, outputs, ComputeIndexes};
use super::Vecs;
impl Vecs {
#[allow(clippy::too_many_arguments)]
pub(crate) fn compute(
&mut self,
indexer: &Indexer,
indexes: &indexes::Vecs,
blocks: &blocks::Vecs,
inputs: &inputs::Vecs,
outputs: &outputs::Vecs,
starting_indexes: &ComputeIndexes,
exit: &Exit,
) -> Result<()> {
// Count computes first
self.count
.compute(indexer, starting_indexes, exit)?;
// Versions depends on count
self.versions
.compute(indexer, starting_indexes, exit)?;
// Size computes next
self.size
.compute(indexer, indexes, starting_indexes, exit)?;
// Fees depends on size
self.fees.compute(
indexer,
indexes,
inputs,
&self.size,
starting_indexes,
exit,
)?;
// Volume depends on fees, counts, and blocks (lookback vecs, interval)
self.volume.compute(
indexer,
indexes,
blocks,
&self.count,
&self.fees,
&inputs.count,
&outputs.count,
starting_indexes,
exit,
)?;
let _lock = exit.lock();
self.db.compact()?;
Ok(())
}
}