use std::path::Path;
use brk_error::Result;
use brk_types::{Cents, Version};
use super::{DB_NAME, Vecs, coinflow, cointime};
use crate::{
distribution::AllChainCache,
indexes,
internal::{
CachedWindowStartVec, PerBlock, Windows,
db_utils::{finalize_db, open_db},
},
price,
};
impl Vecs {
pub(crate) fn forced_import(
parent_path: &Path,
parent_version: Version,
indexes: &indexes::Vecs,
cached_starts: &Windows<&CachedWindowStartVec>,
prices: &price::Vecs,
subsidy_cents: &PerBlock<Cents>,
all_chain: &AllChainCache,
) -> Result<Self> {
let db = open_db(parent_path, DB_NAME, 250_000)?;
let cointime = cointime::Vecs::forced_import(
&db,
parent_version,
indexes,
cached_starts,
prices,
subsidy_cents,
all_chain,
)?;
let coinflow = coinflow::Vecs::forced_import(&db, parent_version, indexes, prices)?;
let this = Self {
db,
cointime,
coinflow,
};
finalize_db(&this.db, &this)?;
Ok(this)
}
}