commit d1cfa6f31e87252cbdafbb9924f56cc1976f047e
parent 03b939d03e3e2278b5c3458acde7a58820be2f83
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 17:12:03 +0000
app: add datastore config builder
- add AppDatastoreConfig with idb and key maps
- default datastore config to IDB_CONFIG_DATASTORE
- embed datastore config in AppConfig
- add unit tests for datastore defaults
Diffstat:
2 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/app/src/config.rs b/app/src/config.rs
@@ -2,7 +2,11 @@
use std::collections::BTreeMap;
-use radroots_app_core::idb::{RadrootsClientIdbConfig, IDB_CONFIG_KEYSTORE_NOSTR};
+use radroots_app_core::idb::{
+ RadrootsClientIdbConfig,
+ IDB_CONFIG_DATASTORE,
+ IDB_CONFIG_KEYSTORE_NOSTR,
+};
pub type AppDatastoreKeyParam = fn(&str) -> String;
pub type AppDatastoreKeyMap = BTreeMap<&'static str, &'static str>;
@@ -40,15 +44,31 @@ impl AppKeystoreConfig {
}
#[derive(Debug, Clone, PartialEq, Eq)]
-pub struct AppConfig {
+pub struct AppDatastoreConfig {
+ pub idb_config: RadrootsClientIdbConfig,
pub key_maps: AppKeyMapConfig,
+}
+
+impl AppDatastoreConfig {
+ pub fn default_config(key_maps: AppKeyMapConfig) -> Self {
+ Self {
+ idb_config: IDB_CONFIG_DATASTORE,
+ key_maps,
+ }
+ }
+}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct AppConfig {
+ pub datastore: AppDatastoreConfig,
pub keystore: AppKeystoreConfig,
}
impl AppConfig {
pub fn empty() -> Self {
+ let key_maps = AppKeyMapConfig::empty();
Self {
- key_maps: AppKeyMapConfig::empty(),
+ datastore: AppDatastoreConfig::default_config(key_maps),
keystore: AppKeystoreConfig::default_config(),
}
}
@@ -68,10 +88,11 @@ mod tests {
app_config_default,
app_config_from_env,
AppConfig,
+ AppDatastoreConfig,
AppKeyMapConfig,
AppKeystoreConfig,
};
- use radroots_app_core::idb::IDB_CONFIG_KEYSTORE_NOSTR;
+ use radroots_app_core::idb::{IDB_CONFIG_DATASTORE, IDB_CONFIG_KEYSTORE_NOSTR};
#[test]
fn key_map_config_defaults_empty() {
@@ -84,7 +105,7 @@ mod tests {
#[test]
fn app_config_defaults_empty() {
let config = AppConfig::empty();
- assert!(config.key_maps.key_map.is_empty());
+ assert!(config.datastore.key_maps.key_map.is_empty());
}
#[test]
@@ -99,4 +120,12 @@ mod tests {
let config = AppKeystoreConfig::default_config();
assert_eq!(config.nostr_store, IDB_CONFIG_KEYSTORE_NOSTR);
}
+
+ #[test]
+ fn datastore_config_defaults_to_idb_store() {
+ let key_maps = AppKeyMapConfig::empty();
+ let config = AppDatastoreConfig::default_config(key_maps);
+ assert_eq!(config.idb_config, IDB_CONFIG_DATASTORE);
+ assert!(config.key_maps.key_map.is_empty());
+ }
}
diff --git a/app/src/lib.rs b/app/src/lib.rs
@@ -12,6 +12,7 @@ pub use config::{
app_config_default,
app_config_from_env,
AppConfig,
+ AppDatastoreConfig,
AppDatastoreKeyMap,
AppDatastoreKeyObjMap,
AppDatastoreKeyParam,