app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 42f5d5c85648a49230828ae4632866544259a9d3
parent f9f14635b3ab4ddad25fbc83b7b301583c8c9268
Author: triesap <triesap@radroots.dev>
Date:   Mon, 19 Jan 2026 17:30:07 +0000

app: add keystore key map placeholder

- add AppKeystoreKeyMap type alias
- include key map in keystore config defaults
- export keystore key map helpers from app crate
- add unit test for empty keystore map

Diffstat:
Mapp/src/config.rs | 18++++++++++++++++--
Mapp/src/lib.rs | 2++
2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/app/src/config.rs b/app/src/config.rs @@ -12,6 +12,7 @@ pub type AppDatastoreKeyParam = fn(&str) -> String; pub type AppDatastoreKeyMap = BTreeMap<&'static str, &'static str>; pub type AppDatastoreKeyParamMap = BTreeMap<&'static str, AppDatastoreKeyParam>; pub type AppDatastoreKeyObjMap = BTreeMap<&'static str, &'static str>; +pub type AppKeystoreKeyMap = BTreeMap<&'static str, &'static str>; pub const APP_DATASTORE_KEY_NOSTR_KEY: &str = "nostr:key"; pub const APP_DATASTORE_KEY_EULA_DATE: &str = "app:eula:date"; @@ -112,19 +113,25 @@ pub fn app_key_maps_validate(config: &AppKeyMapConfig) -> AppConfigResult<()> { Ok(()) } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct AppKeystoreConfig { pub nostr_store: RadrootsClientIdbConfig, + pub key_map: AppKeystoreKeyMap, } impl AppKeystoreConfig { - pub const fn default_config() -> Self { + pub fn default_config() -> Self { Self { nostr_store: IDB_CONFIG_KEYSTORE_NOSTR, + key_map: app_keystore_key_maps_default(), } } } +pub fn app_keystore_key_maps_default() -> AppKeystoreKeyMap { + BTreeMap::new() +} + #[derive(Debug, Clone, PartialEq, Eq)] pub struct AppDatastoreConfig { pub idb_config: RadrootsClientIdbConfig, @@ -178,6 +185,7 @@ mod tests { app_config_from_env, app_datastore_param_nostr_profile, app_key_maps_validate, + app_keystore_key_maps_default, AppConfig, AppConfigError, AppDatastoreConfig, @@ -222,6 +230,12 @@ mod tests { } #[test] + fn keystore_key_maps_defaults_empty() { + let map = app_keystore_key_maps_default(); + assert!(map.is_empty()); + } + + #[test] fn datastore_config_defaults_to_idb_store() { let key_maps = AppKeyMapConfig::empty(); let config = AppDatastoreConfig::default_config(key_maps); diff --git a/app/src/lib.rs b/app/src/lib.rs @@ -13,6 +13,7 @@ pub use config::{ app_config_from_env, app_datastore_param_nostr_profile, app_datastore_param_radroots_profile, + app_keystore_key_maps_default, app_key_maps_default, app_key_maps_validate, AppConfig, @@ -24,6 +25,7 @@ pub use config::{ AppDatastoreKeyParam, AppDatastoreKeyParamMap, AppKeystoreConfig, + AppKeystoreKeyMap, AppKeyMapConfig, APP_DATASTORE_KEY_EULA_DATE, APP_DATASTORE_KEY_NOSTR_KEY,