native_db 0.8.2

Drop-in embedded database
Documentation
#[cfg(feature = "redb1")]
mod redb1_to_redb2;
#[cfg(feature = "upgrade_0_7_x")]
mod secondary_index_table_multimap;

use std::{collections::HashMap, path::Path};

use crate::{database_instance::DatabaseInstance, db_type::Result, Configuration, ModelBuilder};

pub(crate) fn upgrade_redb(
    database_configuration: &Configuration,
    path: impl AsRef<Path>,
    _model_builder: &HashMap<String, ModelBuilder>,
) -> Result<DatabaseInstance> {
    #[cfg(feature = "redb1")]
    redb1_to_redb2::upgrade_redb1_to_redb2(database_configuration, &path, _model_builder)?;

    let redb_builder = database_configuration.new_rdb_builder();
    let database_instance = DatabaseInstance::open_on_disk(redb_builder, &path)?;

    Ok(database_instance)
}

pub(crate) fn upgrade_underlying_database(
    _database_instance: &DatabaseInstance,
    _model_builder: &HashMap<String, ModelBuilder>,
) -> Result<()> {
    #[cfg(feature = "upgrade_0_7_x")]
    secondary_index_table_multimap::upgrade_secondary_index_table_multimap(
        _database_instance,
        _model_builder,
    )?;

    Ok(())
}