nimbus/stateful/
updating.rs1use crate::error::Result;
9use crate::stateful::persistence::{Database, StoreId, Writer};
10use crate::Experiment;
11
12const KEY_PENDING_UPDATES: &str = "pending-experiment-updates";
13
14pub fn write_pending_experiments(
15 db: &Database,
16 writer: &mut Writer,
17 experiments: Vec<Experiment>,
18) -> Result<()> {
19 db.get_store(StoreId::Updates)
20 .put(writer, KEY_PENDING_UPDATES, &experiments)
21}
22
23pub fn read_and_remove_pending_experiments(
24 db: &Database,
25 writer: &mut Writer,
26) -> Result<Option<Vec<Experiment>>> {
27 let store = db.get_store(StoreId::Updates);
28 let experiments = store.get::<Vec<Experiment>, _>(writer, KEY_PENDING_UPDATES)?;
29
30 if experiments.is_some() {
34 store.clear(writer)?;
35 }
36
37 Ok(experiments)
40}