forge_engine/cea/
store.rs1use crate::cea::graph::CausalGraph;
2use crate::cea::instrumentation::AttributedRunResult;
3use crate::config::ForgeConfig;
4use crate::error::ForgeResult;
5use crate::store::ForgeStore;
6use rusqlite::Transaction;
7
8pub use cea_store::UpdateResult;
9
10pub fn update_graph(
14 store: &ForgeStore,
15 result: &AttributedRunResult,
16 eval_id: &str,
17 version_id: &str,
18 config: &ForgeConfig,
19) -> ForgeResult<UpdateResult> {
20 store.with_transaction_conn(|tx| update_graph_with_tx(tx, result, eval_id, version_id, config))
21}
22
23pub fn update_graph_with_tx(
28 tx: &Transaction,
29 result: &AttributedRunResult,
30 eval_id: &str,
31 version_id: &str,
32 config: &ForgeConfig,
33) -> ForgeResult<UpdateResult> {
34 let sqlite = cea_sqlite::SqliteCeaStoreTx::new(tx);
35 Ok(cea_store::update_graph(
36 &sqlite,
37 result,
38 eval_id,
39 version_id,
40 config.cea.attribution_decay_factor,
41 )?)
42}
43
44pub fn load_graph(store: &ForgeStore, version_id: Option<&str>) -> ForgeResult<CausalGraph> {
49 store.with_conn(|conn| {
50 let sqlite = cea_sqlite::SqliteCeaStoreConn::new(conn);
51 Ok(cea_store::load_graph(&sqlite, version_id)?)
52 })
53}
54
55pub fn load_graph_with_tx(tx: &Transaction, version_id: Option<&str>) -> ForgeResult<CausalGraph> {
59 let sqlite = cea_sqlite::SqliteCeaStoreTx::new(tx);
60 Ok(cea_store::load_graph(&sqlite, version_id)?)
61}