use crate::cea::graph::CausalGraph;
use crate::cea::instrumentation::AttributedRunResult;
use crate::config::ForgeConfig;
use crate::error::ForgeResult;
use crate::store::ForgeStore;
use rusqlite::Transaction;
pub use cea_store::UpdateResult;
pub fn update_graph(
store: &ForgeStore,
result: &AttributedRunResult,
eval_id: &str,
version_id: &str,
config: &ForgeConfig,
) -> ForgeResult<UpdateResult> {
store.with_transaction_conn(|tx| update_graph_with_tx(tx, result, eval_id, version_id, config))
}
pub fn update_graph_with_tx(
tx: &Transaction,
result: &AttributedRunResult,
eval_id: &str,
version_id: &str,
config: &ForgeConfig,
) -> ForgeResult<UpdateResult> {
let sqlite = cea_sqlite::SqliteCeaStoreTx::new(tx);
Ok(cea_store::update_graph(
&sqlite,
result,
eval_id,
version_id,
config.cea.attribution_decay_factor,
)?)
}
pub fn load_graph(store: &ForgeStore, version_id: Option<&str>) -> ForgeResult<CausalGraph> {
store.with_conn(|conn| {
let sqlite = cea_sqlite::SqliteCeaStoreConn::new(conn);
Ok(cea_store::load_graph(&sqlite, version_id)?)
})
}
pub fn load_graph_with_tx(tx: &Transaction, version_id: Option<&str>) -> ForgeResult<CausalGraph> {
let sqlite = cea_sqlite::SqliteCeaStoreTx::new(tx);
Ok(cea_store::load_graph(&sqlite, version_id)?)
}