1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use crate::config::MicrokvConfig;
use crate::error::StateComponentError;

pub fn microkv_instance(config: &MicrokvConfig) -> color_eyre::Result<microkv::MicroKV> {
    let dbname = config
        .db_name
        .clone()
        .ok_or_else(|| StateComponentError::Microkv("Missing microkv db name".to_string()))?;

    let mut microkv = try_microkv(dbname, config)?;
    microkv = microkv.set_auto_commit(config.auto_commit);
    microkv.commit()?;
    Ok(microkv)
}

fn try_microkv(dbname: String, config: &MicrokvConfig) -> color_eyre::Result<microkv::MicroKV> {
    Ok(microkv::MicroKV::open_with_base_path(
        dbname,
        config.base_path.clone(),
    )?)
}