app

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

commit 840ad351adf75d78dbf4a63649f7d308bfb206ad
parent 5b87bfabc89a573da22950dfbb2875479ceb78b8
Author: triesap <triesap@radroots.dev>
Date:   Tue, 20 Jan 2026 18:20:30 +0000

app: rename app config types

- rename AppConfig to RadrootsAppConfig
- rename App*Config helpers and key map types
- update config error/result naming across modules
- adjust exports and tests for config renames

Diffstat:
Mapp/src/app.rs | 4++--
Mapp/src/bootstrap.rs | 16++++++++--------
Mapp/src/config.rs | 192++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mapp/src/health.rs | 20++++++++++----------
Mapp/src/init.rs | 24++++++++++++------------
Mapp/src/lib.rs | 24++++++++++++------------
Mapp/src/logging.rs | 42+++++++++++++++++++++---------------------
7 files changed, 161 insertions(+), 161 deletions(-)

diff --git a/app/src/app.rs b/app/src/app.rs @@ -24,7 +24,7 @@ use crate::{ app_datastore_set_notifications_permission, app_health_check_all_logged, AppBackends, - AppConfig, + RadrootsAppConfig, AppHealthCheckResult, AppHealthCheckStatus, AppHealthReport, @@ -67,7 +67,7 @@ fn log_init_stage(stage: AppInitStage) { } fn spawn_health_checks( - config: AppConfig, + config: RadrootsAppConfig, health_report: RwSignal<AppHealthReport, LocalStorage>, health_running: RwSignal<bool, LocalStorage>, active_key: RwSignal<Option<String>, LocalStorage>, diff --git a/app/src/bootstrap.rs b/app/src/bootstrap.rs @@ -10,12 +10,12 @@ use crate::{ RadrootsAppSettings, AppInitError, AppInitResult, - AppKeyMapConfig, + RadrootsAppKeyMapConfig, }; pub async fn app_datastore_write_config<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, data: &RadrootsAppSettings, ) -> AppInitResult<RadrootsAppSettings> { let key = app_datastore_obj_key_cfg_data(key_maps).map_err(AppInitError::Config)?; @@ -29,7 +29,7 @@ pub async fn app_datastore_write_config<T: RadrootsClientDatastore>( pub async fn app_datastore_has_config<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppInitResult<bool> { let key = app_datastore_obj_key_cfg_data(key_maps).map_err(AppInitError::Config)?; match datastore.get_obj::<RadrootsAppSettings>(key).await { @@ -41,7 +41,7 @@ pub async fn app_datastore_has_config<T: RadrootsClientDatastore>( pub async fn app_datastore_write_app_data<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, data: &RadrootsAppState, ) -> AppInitResult<RadrootsAppState> { let key = app_datastore_obj_key_app_data(key_maps).map_err(AppInitError::Config)?; @@ -55,7 +55,7 @@ pub async fn app_datastore_write_app_data<T: RadrootsClientDatastore>( pub async fn app_datastore_read_app_data<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppInitResult<RadrootsAppState> { let key = app_datastore_obj_key_app_data(key_maps).map_err(AppInitError::Config)?; let value = datastore @@ -68,7 +68,7 @@ pub async fn app_datastore_read_app_data<T: RadrootsClientDatastore>( pub async fn app_datastore_has_app_data<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppInitResult<bool> { let key = app_datastore_obj_key_app_data(key_maps).map_err(AppInitError::Config)?; match datastore.get_obj::<RadrootsAppState>(key).await { @@ -80,7 +80,7 @@ pub async fn app_datastore_has_app_data<T: RadrootsClientDatastore>( pub async fn app_datastore_clear_bootstrap<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppInitResult<()> { let cfg_key = app_datastore_obj_key_cfg_data(key_maps).map_err(AppInitError::Config)?; datastore @@ -98,7 +98,7 @@ pub async fn app_datastore_clear_bootstrap<T: RadrootsClientDatastore>( pub async fn app_datastore_set_notifications_permission<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, permission: &str, ) -> AppInitResult<RadrootsAppState> { let mut data = match app_datastore_has_app_data(datastore, key_maps).await? { diff --git a/app/src/config.rs b/app/src/config.rs @@ -8,11 +8,11 @@ use radroots_app_core::idb::{ IDB_CONFIG_KEYSTORE_NOSTR, }; -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 type RadrootsAppDatastoreKeyParam = fn(&str) -> String; +pub type RadrootsAppDatastoreKeyMap = BTreeMap<&'static str, &'static str>; +pub type RadrootsAppDatastoreKeyParamMap = BTreeMap<&'static str, RadrootsAppDatastoreKeyParam>; +pub type RadrootsAppDatastoreKeyObjMap = BTreeMap<&'static str, &'static str>; +pub type RadrootsAppKeystoreKeyMap = 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"; @@ -34,13 +34,13 @@ pub fn app_datastore_param_log_entry(entry_id: &str) -> String { } #[derive(Debug, Clone, PartialEq, Eq)] -pub struct AppKeyMapConfig { - pub key_map: AppDatastoreKeyMap, - pub param_map: AppDatastoreKeyParamMap, - pub obj_map: AppDatastoreKeyObjMap, +pub struct RadrootsAppKeyMapConfig { + pub key_map: RadrootsAppDatastoreKeyMap, + pub param_map: RadrootsAppDatastoreKeyParamMap, + pub obj_map: RadrootsAppDatastoreKeyObjMap, } -impl AppKeyMapConfig { +impl RadrootsAppKeyMapConfig { pub fn empty() -> Self { Self { key_map: BTreeMap::new(), @@ -50,21 +50,21 @@ impl AppKeyMapConfig { } } -pub fn app_key_maps_default() -> AppKeyMapConfig { +pub fn app_key_maps_default() -> RadrootsAppKeyMapConfig { let mut key_map = BTreeMap::new(); key_map.insert("nostr_key", APP_DATASTORE_KEY_NOSTR_KEY); key_map.insert("eula_date", APP_DATASTORE_KEY_EULA_DATE); let mut param_map = BTreeMap::new(); - param_map.insert("nostr_profile", app_datastore_param_nostr_profile as AppDatastoreKeyParam); + param_map.insert("nostr_profile", app_datastore_param_nostr_profile as RadrootsAppDatastoreKeyParam); param_map.insert( "radroots_profile", - app_datastore_param_radroots_profile as AppDatastoreKeyParam, + app_datastore_param_radroots_profile as RadrootsAppDatastoreKeyParam, ); - param_map.insert("log_entry", app_datastore_param_log_entry as AppDatastoreKeyParam); + param_map.insert("log_entry", app_datastore_param_log_entry as RadrootsAppDatastoreKeyParam); let mut obj_map = BTreeMap::new(); obj_map.insert("cfg_data", APP_DATASTORE_KEY_OBJ_CFG_DATA); obj_map.insert("app_data", APP_DATASTORE_KEY_OBJ_APP_DATA); - AppKeyMapConfig { + RadrootsAppKeyMapConfig { key_map, param_map, obj_map, @@ -72,133 +72,133 @@ pub fn app_key_maps_default() -> AppKeyMapConfig { } #[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum AppConfigError { +pub enum RadrootsAppConfigError { MissingKeyMap(&'static str), MissingParamMap(&'static str), MissingObjMap(&'static str), MissingKeystoreKeyMap(&'static str), } -pub type AppConfigResult<T> = Result<T, AppConfigError>; +pub type RadrootsAppConfigResult<T> = Result<T, RadrootsAppConfigError>; -impl AppConfigError { +impl RadrootsAppConfigError { pub const fn message(&self) -> &'static str { match self { - AppConfigError::MissingKeyMap(_) => "error.app.config.key_map_missing", - AppConfigError::MissingParamMap(_) => "error.app.config.param_map_missing", - AppConfigError::MissingObjMap(_) => "error.app.config.obj_map_missing", - AppConfigError::MissingKeystoreKeyMap(_) => "error.app.config.keystore_map_missing", + RadrootsAppConfigError::MissingKeyMap(_) => "error.app.config.key_map_missing", + RadrootsAppConfigError::MissingParamMap(_) => "error.app.config.param_map_missing", + RadrootsAppConfigError::MissingObjMap(_) => "error.app.config.obj_map_missing", + RadrootsAppConfigError::MissingKeystoreKeyMap(_) => "error.app.config.keystore_map_missing", } } } -impl std::fmt::Display for AppConfigError { +impl std::fmt::Display for RadrootsAppConfigError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str(self.message()) } } -impl std::error::Error for AppConfigError {} +impl std::error::Error for RadrootsAppConfigError {} -pub fn app_key_maps_validate(config: &AppKeyMapConfig) -> AppConfigResult<()> { +pub fn app_key_maps_validate(config: &RadrootsAppKeyMapConfig) -> RadrootsAppConfigResult<()> { if !config.key_map.contains_key("nostr_key") { - return Err(AppConfigError::MissingKeyMap("nostr_key")); + return Err(RadrootsAppConfigError::MissingKeyMap("nostr_key")); } if !config.key_map.contains_key("eula_date") { - return Err(AppConfigError::MissingKeyMap("eula_date")); + return Err(RadrootsAppConfigError::MissingKeyMap("eula_date")); } if !config.param_map.contains_key("nostr_profile") { - return Err(AppConfigError::MissingParamMap("nostr_profile")); + return Err(RadrootsAppConfigError::MissingParamMap("nostr_profile")); } if !config.param_map.contains_key("radroots_profile") { - return Err(AppConfigError::MissingParamMap("radroots_profile")); + return Err(RadrootsAppConfigError::MissingParamMap("radroots_profile")); } if !config.param_map.contains_key("log_entry") { - return Err(AppConfigError::MissingParamMap("log_entry")); + return Err(RadrootsAppConfigError::MissingParamMap("log_entry")); } if !config.obj_map.contains_key("cfg_data") { - return Err(AppConfigError::MissingObjMap("cfg_data")); + return Err(RadrootsAppConfigError::MissingObjMap("cfg_data")); } if !config.obj_map.contains_key("app_data") { - return Err(AppConfigError::MissingObjMap("app_data")); + return Err(RadrootsAppConfigError::MissingObjMap("app_data")); } Ok(()) } -pub fn app_keystore_key_maps_validate(config: &AppKeystoreKeyMap) -> AppConfigResult<()> { +pub fn app_keystore_key_maps_validate(config: &RadrootsAppKeystoreKeyMap) -> RadrootsAppConfigResult<()> { if !config.contains_key("nostr_default") { - return Err(AppConfigError::MissingKeystoreKeyMap("nostr_default")); + return Err(RadrootsAppConfigError::MissingKeystoreKeyMap("nostr_default")); } Ok(()) } -pub fn app_datastore_key(config: &AppKeyMapConfig, key: &'static str) -> AppConfigResult<&'static str> { +pub fn app_datastore_key(config: &RadrootsAppKeyMapConfig, key: &'static str) -> RadrootsAppConfigResult<&'static str> { config .key_map .get(key) .copied() - .ok_or(AppConfigError::MissingKeyMap(key)) + .ok_or(RadrootsAppConfigError::MissingKeyMap(key)) } pub fn app_datastore_obj_key( - config: &AppKeyMapConfig, + config: &RadrootsAppKeyMapConfig, key: &'static str, -) -> AppConfigResult<&'static str> { +) -> RadrootsAppConfigResult<&'static str> { config .obj_map .get(key) .copied() - .ok_or(AppConfigError::MissingObjMap(key)) + .ok_or(RadrootsAppConfigError::MissingObjMap(key)) } pub fn app_datastore_param_key( - config: &AppKeyMapConfig, + config: &RadrootsAppKeyMapConfig, key: &'static str, -) -> AppConfigResult<AppDatastoreKeyParam> { +) -> RadrootsAppConfigResult<RadrootsAppDatastoreKeyParam> { config .param_map .get(key) .copied() - .ok_or(AppConfigError::MissingParamMap(key)) + .ok_or(RadrootsAppConfigError::MissingParamMap(key)) } -pub fn app_datastore_key_nostr_key(config: &AppKeyMapConfig) -> AppConfigResult<&'static str> { +pub fn app_datastore_key_nostr_key(config: &RadrootsAppKeyMapConfig) -> RadrootsAppConfigResult<&'static str> { app_datastore_key(config, "nostr_key") } -pub fn app_datastore_key_eula_date(config: &AppKeyMapConfig) -> AppConfigResult<&'static str> { +pub fn app_datastore_key_eula_date(config: &RadrootsAppKeyMapConfig) -> RadrootsAppConfigResult<&'static str> { app_datastore_key(config, "eula_date") } -pub fn app_datastore_obj_key_cfg_data(config: &AppKeyMapConfig) -> AppConfigResult<&'static str> { +pub fn app_datastore_obj_key_cfg_data(config: &RadrootsAppKeyMapConfig) -> RadrootsAppConfigResult<&'static str> { app_datastore_obj_key(config, "cfg_data") } -pub fn app_datastore_obj_key_app_data(config: &AppKeyMapConfig) -> AppConfigResult<&'static str> { +pub fn app_datastore_obj_key_app_data(config: &RadrootsAppKeyMapConfig) -> RadrootsAppConfigResult<&'static str> { app_datastore_obj_key(config, "app_data") } pub fn app_keystore_key( - config: &AppKeystoreKeyMap, + config: &RadrootsAppKeystoreKeyMap, key: &'static str, -) -> AppConfigResult<&'static str> { +) -> RadrootsAppConfigResult<&'static str> { config .get(key) .copied() - .ok_or(AppConfigError::MissingKeystoreKeyMap(key)) + .ok_or(RadrootsAppConfigError::MissingKeystoreKeyMap(key)) } -pub fn app_keystore_key_nostr_default(config: &AppKeystoreKeyMap) -> AppConfigResult<&'static str> { +pub fn app_keystore_key_nostr_default(config: &RadrootsAppKeystoreKeyMap) -> RadrootsAppConfigResult<&'static str> { app_keystore_key(config, "nostr_default") } #[derive(Debug, Clone, PartialEq, Eq)] -pub struct AppKeystoreConfig { +pub struct RadrootsAppKeystoreConfig { pub nostr_store: RadrootsClientIdbConfig, - pub key_map: AppKeystoreKeyMap, + pub key_map: RadrootsAppKeystoreKeyMap, } -impl AppKeystoreConfig { +impl RadrootsAppKeystoreConfig { pub fn default_config() -> Self { Self { nostr_store: IDB_CONFIG_KEYSTORE_NOSTR, @@ -207,20 +207,20 @@ impl AppKeystoreConfig { } } -pub fn app_keystore_key_maps_default() -> AppKeystoreKeyMap { +pub fn app_keystore_key_maps_default() -> RadrootsAppKeystoreKeyMap { let mut map = BTreeMap::new(); map.insert("nostr_default", APP_KEYSTORE_KEY_NOSTR_DEFAULT); map } #[derive(Debug, Clone, PartialEq, Eq)] -pub struct AppDatastoreConfig { +pub struct RadrootsAppDatastoreConfig { pub idb_config: RadrootsClientIdbConfig, - pub key_maps: AppKeyMapConfig, + pub key_maps: RadrootsAppKeyMapConfig, } -impl AppDatastoreConfig { - pub fn default_config(key_maps: AppKeyMapConfig) -> Self { +impl RadrootsAppDatastoreConfig { + pub fn default_config(key_maps: RadrootsAppKeyMapConfig) -> Self { Self { idb_config: IDB_CONFIG_DATASTORE, key_maps, @@ -229,56 +229,56 @@ impl AppDatastoreConfig { } #[derive(Debug, Clone, PartialEq, Eq, Default)] -pub struct AppAssetConfig { +pub struct RadrootsAppAssetConfig { pub sql_wasm_url: Option<String>, pub geocoder_db_url: Option<String>, } -pub fn app_assets_sql_wasm_url(config: &AppConfig) -> Option<&str> { +pub fn app_assets_sql_wasm_url(config: &RadrootsAppConfig) -> Option<&str> { config.assets.sql_wasm_url.as_deref() } -pub fn app_assets_geocoder_db_url(config: &AppConfig) -> Option<&str> { +pub fn app_assets_geocoder_db_url(config: &RadrootsAppConfig) -> Option<&str> { config.assets.geocoder_db_url.as_deref() } #[derive(Debug, Clone, PartialEq, Eq)] -pub struct AppConfig { - pub datastore: AppDatastoreConfig, - pub keystore: AppKeystoreConfig, - pub assets: AppAssetConfig, +pub struct RadrootsAppConfig { + pub datastore: RadrootsAppDatastoreConfig, + pub keystore: RadrootsAppKeystoreConfig, + pub assets: RadrootsAppAssetConfig, } -impl AppConfig { +impl RadrootsAppConfig { pub fn empty() -> Self { - let key_maps = AppKeyMapConfig::empty(); + let key_maps = RadrootsAppKeyMapConfig::empty(); Self { - datastore: AppDatastoreConfig::default_config(key_maps), - keystore: AppKeystoreConfig::default_config(), - assets: AppAssetConfig::default(), + datastore: RadrootsAppDatastoreConfig::default_config(key_maps), + keystore: RadrootsAppKeystoreConfig::default_config(), + assets: RadrootsAppAssetConfig::default(), } } - pub fn from_key_maps(key_maps: AppKeyMapConfig) -> Self { + pub fn from_key_maps(key_maps: RadrootsAppKeyMapConfig) -> Self { Self { - datastore: AppDatastoreConfig::default_config(key_maps), - keystore: AppKeystoreConfig::default_config(), - assets: AppAssetConfig::default(), + datastore: RadrootsAppDatastoreConfig::default_config(key_maps), + keystore: RadrootsAppKeystoreConfig::default_config(), + assets: RadrootsAppAssetConfig::default(), } } - pub fn validate(&self) -> AppConfigResult<()> { + pub fn validate(&self) -> RadrootsAppConfigResult<()> { app_key_maps_validate(&self.datastore.key_maps)?; app_keystore_key_maps_validate(&self.keystore.key_map)?; Ok(()) } } -pub fn app_config_default() -> AppConfig { - AppConfig::from_key_maps(app_key_maps_default()) +pub fn app_config_default() -> RadrootsAppConfig { + RadrootsAppConfig::from_key_maps(app_key_maps_default()) } -pub fn app_config_from_env() -> AppConfig { +pub fn app_config_from_env() -> RadrootsAppConfig { app_config_default() } @@ -301,13 +301,13 @@ mod tests { app_datastore_param_key, app_assets_geocoder_db_url, app_assets_sql_wasm_url, - AppAssetConfig, - AppConfig, - AppConfigError, - AppDatastoreConfig, - AppKeyMapConfig, - AppKeystoreConfig, - AppKeystoreKeyMap, + RadrootsAppAssetConfig, + RadrootsAppConfig, + RadrootsAppConfigError, + RadrootsAppDatastoreConfig, + RadrootsAppKeyMapConfig, + RadrootsAppKeystoreConfig, + RadrootsAppKeystoreKeyMap, APP_DATASTORE_KEY_EULA_DATE, APP_DATASTORE_KEY_NOSTR_KEY, APP_DATASTORE_KEY_OBJ_APP_DATA, @@ -320,7 +320,7 @@ mod tests { #[test] fn key_map_config_defaults_empty() { - let config = AppKeyMapConfig::empty(); + let config = RadrootsAppKeyMapConfig::empty(); assert!(config.key_map.is_empty()); assert!(config.param_map.is_empty()); assert!(config.obj_map.is_empty()); @@ -328,7 +328,7 @@ mod tests { #[test] fn app_config_defaults_empty() { - let config = AppConfig::empty(); + let config = RadrootsAppConfig::empty(); assert!(config.datastore.key_maps.key_map.is_empty()); } @@ -347,13 +347,13 @@ mod tests { fn app_config_validate_uses_key_map_rules() { let config = app_config_default(); assert!(config.validate().is_ok()); - let empty = AppConfig::empty(); + let empty = RadrootsAppConfig::empty(); assert!(empty.validate().is_err()); } #[test] fn keystore_config_defaults_to_nostr_store() { - let config = AppKeystoreConfig::default_config(); + let config = RadrootsAppKeystoreConfig::default_config(); assert_eq!(config.nostr_store, IDB_CONFIG_KEYSTORE_NOSTR); } @@ -368,15 +368,15 @@ mod tests { #[test] fn asset_config_defaults_empty() { - let config = AppAssetConfig::default(); + let config = RadrootsAppAssetConfig::default(); assert!(config.sql_wasm_url.is_none()); assert!(config.geocoder_db_url.is_none()); } #[test] fn datastore_config_defaults_to_idb_store() { - let key_maps = AppKeyMapConfig::empty(); - let config = AppDatastoreConfig::default_config(key_maps); + let key_maps = RadrootsAppKeyMapConfig::empty(); + let config = RadrootsAppDatastoreConfig::default_config(key_maps); assert_eq!(config.idb_config, IDB_CONFIG_DATASTORE); assert!(config.key_maps.key_map.is_empty()); } @@ -411,20 +411,20 @@ mod tests { fn key_map_validation_requires_expected_keys() { let config = super::app_key_maps_default(); assert!(app_key_maps_validate(&config).is_ok()); - let mut missing = AppKeyMapConfig::empty(); + let mut missing = RadrootsAppKeyMapConfig::empty(); missing.key_map.insert("nostr_key", APP_DATASTORE_KEY_NOSTR_KEY); let err = app_key_maps_validate(&missing).expect_err("missing keys"); - assert_eq!(err, AppConfigError::MissingKeyMap("eula_date")); + assert_eq!(err, RadrootsAppConfigError::MissingKeyMap("eula_date")); } #[test] fn keystore_map_validation_requires_expected_keys() { let map = app_keystore_key_maps_default(); assert!(app_keystore_key_maps_validate(&map).is_ok()); - let empty: AppKeystoreKeyMap = BTreeMap::new(); + let empty: RadrootsAppKeystoreKeyMap = BTreeMap::new(); let err = app_keystore_key_maps_validate(&empty) .expect_err("missing keys"); - assert_eq!(err, AppConfigError::MissingKeystoreKeyMap("nostr_default")); + assert_eq!(err, RadrootsAppConfigError::MissingKeystoreKeyMap("nostr_default")); } #[test] diff --git a/app/src/health.rs b/app/src/health.rs @@ -92,7 +92,7 @@ use crate::{ AppNotifications, AppLogLevel, AppTangleClient, - AppKeyMapConfig, + RadrootsAppKeyMapConfig, }; use radroots_app_core::notifications::RadrootsClientNotificationsPermission; use radroots_app_core::datastore::{RadrootsClientDatastore, RadrootsClientDatastoreError}; @@ -119,7 +119,7 @@ fn log_health_end(name: &str, result: &AppHealthCheckResult) { } } -pub fn app_health_check_key_maps(key_maps: &AppKeyMapConfig) -> AppHealthCheckResult { +pub fn app_health_check_key_maps(key_maps: &RadrootsAppKeyMapConfig) -> AppHealthCheckResult { match app_key_maps_validate(key_maps) { Ok(()) => AppHealthCheckResult::ok(), Err(err) => AppHealthCheckResult::error(err.to_string()), @@ -128,7 +128,7 @@ pub fn app_health_check_key_maps(key_maps: &AppKeyMapConfig) -> AppHealthCheckRe pub async fn app_health_check_bootstrap_config<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppHealthCheckResult { match app_datastore_has_config(datastore, key_maps).await { Ok(true) => AppHealthCheckResult::ok(), @@ -139,7 +139,7 @@ pub async fn app_health_check_bootstrap_config<T: RadrootsClientDatastore>( pub async fn app_health_check_bootstrap_app_data<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppHealthCheckResult { match app_datastore_has_app_data(datastore, key_maps).await { Ok(true) => AppHealthCheckResult::ok(), @@ -150,7 +150,7 @@ pub async fn app_health_check_bootstrap_app_data<T: RadrootsClientDatastore>( pub async fn app_health_check_app_data_active_key<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppHealthCheckResult { let app_data = match app_datastore_read_app_data(datastore, key_maps).await { Ok(value) => value, @@ -241,7 +241,7 @@ pub async fn app_health_check_datastore_roundtrip<T: RadrootsClientDatastore>( pub async fn app_health_check_keystore_access<T: RadrootsClientDatastore, K: RadrootsClientKeystoreNostr>( datastore: &T, keystore: &K, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppHealthCheckResult { let key_name = match app_datastore_key_nostr_key(key_maps) { Ok(value) => value, @@ -266,7 +266,7 @@ pub async fn app_health_check_all<T: RadrootsClientDatastore, K: RadrootsClientK keystore: &K, notifications: &AppNotifications, tangle: &G, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppHealthReport { log_health_start("key_maps"); let key_maps_result = app_health_check_key_maps(key_maps); @@ -315,7 +315,7 @@ pub async fn app_health_check_all_logged<T: RadrootsClientDatastore, K: Radroots keystore: &K, notifications: &AppNotifications, tangle: &G, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppHealthReport { let report = app_health_check_all(datastore, keystore, notifications, tangle, key_maps).await; let _ = app_log_buffer_flush_critical(datastore, key_maps).await; @@ -343,7 +343,7 @@ mod tests { AppHealthReport, }; use crate::app_log_buffer_drain; - use crate::AppKeyMapConfig; + use crate::RadrootsAppKeyMapConfig; use async_trait::async_trait; use radroots_app_core::datastore::{ RadrootsClientDatastore, @@ -405,7 +405,7 @@ mod tests { #[test] fn health_check_key_maps_reports_errors() { - let empty = AppKeyMapConfig::empty(); + let empty = RadrootsAppKeyMapConfig::empty(); let result = app_health_check_key_maps(&empty); assert_eq!(result.status, AppHealthCheckStatus::Error); assert_eq!( diff --git a/app/src/init.rs b/app/src/init.rs @@ -31,11 +31,11 @@ use crate::{ app_keystore_nostr_ensure_key, app_log_debug_emit, RadrootsAppState, - AppConfig, + RadrootsAppConfig, RadrootsAppSettings, - AppConfigError, + RadrootsAppConfigError, AppKeystoreError, - AppKeyMapConfig, + RadrootsAppKeyMapConfig, }; #[cfg(target_arch = "wasm32")] @@ -255,7 +255,7 @@ pub enum AppInitError { Idb(RadrootsClientIdbStoreError), Datastore(RadrootsClientDatastoreError), Keystore(RadrootsClientKeystoreError), - Config(AppConfigError), + Config(RadrootsAppConfigError), Assets(AppInitAssetError), } @@ -282,7 +282,7 @@ impl fmt::Display for AppInitError { impl std::error::Error for AppInitError {} pub struct AppBackends { - pub config: AppConfig, + pub config: RadrootsAppConfig, pub datastore: RadrootsClientWebDatastore, pub nostr_keystore: RadrootsClientWebKeystoreNostr, } @@ -290,7 +290,7 @@ pub struct AppBackends { pub type AppInitResult<T> = Result<T, AppInitError>; pub async fn app_init_assets<F, G>( - config: &AppConfig, + config: &RadrootsAppConfig, mut on_stage: F, mut on_progress: G, ) -> Result<(), AppInitAssetError> @@ -351,7 +351,7 @@ pub fn app_init_mark_completed() { pub async fn app_init_reset<T: RadrootsClientDatastore, K: RadrootsClientKeystoreNostr>( datastore: Option<&T>, - key_maps: Option<&AppKeyMapConfig>, + key_maps: Option<&RadrootsAppKeyMapConfig>, keystore: Option<&K>, ) -> AppInitResult<()> { let _ = app_log_debug_emit("log.app.init.reset", "start", None); @@ -372,7 +372,7 @@ pub async fn app_init_reset<T: RadrootsClientDatastore, K: RadrootsClientKeystor Ok(()) } -pub async fn app_init_backends(config: AppConfig) -> AppInitResult<AppBackends> { +pub async fn app_init_backends(config: RadrootsAppConfig) -> AppInitResult<AppBackends> { let _ = app_log_debug_emit("log.app.init.backends", "start", None); config.validate().map_err(AppInitError::Config)?; let idb_start = app_init_timer_start(); @@ -469,7 +469,7 @@ mod tests { AppInitStage, AppInitAssetError, }; - use crate::{app_config_default, AppConfig}; + use crate::{app_config_default, RadrootsAppConfig}; use radroots_app_core::datastore::RadrootsClientDatastoreError; use radroots_app_core::idb::RadrootsClientIdbStoreError; use radroots_app_core::keystore::{ @@ -478,7 +478,7 @@ mod tests { RadrootsClientKeystoreResult, }; use async_trait::async_trait; - use crate::AppConfigError; + use crate::RadrootsAppConfigError; #[test] fn app_init_error_messages_match_spec() { @@ -496,7 +496,7 @@ mod tests { "error.app.init.keystore", ), ( - AppInitError::Config(AppConfigError::MissingKeyMap("nostr_key")), + AppInitError::Config(RadrootsAppConfigError::MissingKeyMap("nostr_key")), "error.app.init.config", ), ( @@ -636,7 +636,7 @@ mod tests { #[test] fn app_init_assets_reports_unavailable_on_native() { - let mut config = AppConfig::empty(); + let mut config = RadrootsAppConfig::empty(); config.assets.sql_wasm_url = Some("http://example.com/sql.wasm".to_string()); let result = futures::executor::block_on(app_init_assets( &config, diff --git a/app/src/lib.rs b/app/src/lib.rs @@ -107,18 +107,18 @@ pub use config::{ app_keystore_key_nostr_default, app_key_maps_default, app_key_maps_validate, - AppConfig, - AppConfigError, - AppConfigResult, - AppAssetConfig, - AppDatastoreConfig, - AppDatastoreKeyMap, - AppDatastoreKeyObjMap, - AppDatastoreKeyParam, - AppDatastoreKeyParamMap, - AppKeystoreConfig, - AppKeystoreKeyMap, - AppKeyMapConfig, + RadrootsAppConfig, + RadrootsAppConfigError, + RadrootsAppConfigResult, + RadrootsAppAssetConfig, + RadrootsAppDatastoreConfig, + RadrootsAppDatastoreKeyMap, + RadrootsAppDatastoreKeyObjMap, + RadrootsAppDatastoreKeyParam, + RadrootsAppDatastoreKeyParamMap, + RadrootsAppKeystoreConfig, + RadrootsAppKeystoreKeyMap, + RadrootsAppKeyMapConfig, APP_DATASTORE_KEY_EULA_DATE, APP_DATASTORE_KEY_LOG_ENTRY, APP_DATASTORE_KEY_NOSTR_KEY, diff --git a/app/src/logging.rs b/app/src/logging.rs @@ -22,11 +22,11 @@ use radroots_app_core::datastore::{RadrootsClientDatastore, RadrootsClientDatast use crate::{ app_datastore_param_key, - AppConfigError, + RadrootsAppConfigError, AppInitAssetError, AppInitError, AppKeystoreError, - AppKeyMapConfig, + RadrootsAppKeyMapConfig, AppNotificationsError, AppTangleError, }; @@ -114,17 +114,17 @@ impl AppLoggableError for AppInitAssetError { } } -impl AppLoggableError for AppConfigError { +impl AppLoggableError for RadrootsAppConfigError { fn log_code(&self) -> &'static str { self.message() } fn log_context(&self) -> Option<String> { match self { - AppConfigError::MissingKeyMap(key) => Some(format!("key_map={key}")), - AppConfigError::MissingParamMap(key) => Some(format!("param_map={key}")), - AppConfigError::MissingObjMap(key) => Some(format!("obj_map={key}")), - AppConfigError::MissingKeystoreKeyMap(key) => Some(format!("keystore_map={key}")), + RadrootsAppConfigError::MissingKeyMap(key) => Some(format!("key_map={key}")), + RadrootsAppConfigError::MissingParamMap(key) => Some(format!("param_map={key}")), + RadrootsAppConfigError::MissingObjMap(key) => Some(format!("obj_map={key}")), + RadrootsAppConfigError::MissingKeystoreKeyMap(key) => Some(format!("keystore_map={key}")), } } } @@ -177,7 +177,7 @@ impl AppLoggableError for AppTangleError { #[derive(Debug)] pub enum AppLogError { - Config(AppConfigError), + Config(RadrootsAppConfigError), Datastore(RadrootsClientDatastoreError), } @@ -194,8 +194,8 @@ impl std::fmt::Display for AppLogError { impl std::error::Error for AppLogError {} -impl From<AppConfigError> for AppLogError { - fn from(err: AppConfigError) -> Self { +impl From<RadrootsAppConfigError> for AppLogError { + fn from(err: RadrootsAppConfigError) -> Self { AppLogError::Config(err) } } @@ -298,7 +298,7 @@ pub fn app_log_warn_emit(code: &str, message: &str, context: Option<String>) -> } pub fn app_log_entry_key( - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, entry_id: &str, ) -> AppLogResult<String> { let param = app_datastore_param_key(key_maps, "log_entry")?; @@ -307,7 +307,7 @@ pub fn app_log_entry_key( pub async fn app_log_entry_store<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, entry: &AppLogEntry, ) -> AppLogResult<AppLogEntry> { let key = app_log_entry_key(key_maps, &entry.id)?; @@ -319,7 +319,7 @@ pub async fn app_log_entry_store<T: RadrootsClientDatastore>( pub async fn app_log_error_store<T: RadrootsClientDatastore, E: AppLoggableError>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, err: &E, ) -> AppLogResult<AppLogEntry> { let entry = app_log_error_emit(err); @@ -369,7 +369,7 @@ fn app_log_entry_should_persist(level: AppLogLevel) -> bool { pub async fn app_log_buffer_flush<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppLogResult<usize> { let entries = app_log_buffer_drain(); let mut stored = 0; @@ -390,7 +390,7 @@ pub async fn app_log_buffer_flush<T: RadrootsClientDatastore>( pub async fn app_log_buffer_flush_critical<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppLogResult<usize> { let entries = app_log_buffer_drain(); let mut keep = Vec::new(); @@ -424,14 +424,14 @@ pub async fn app_log_buffer_flush_critical<T: RadrootsClientDatastore>( Ok(stored) } -pub fn app_log_entry_prefix(key_maps: &AppKeyMapConfig) -> AppLogResult<String> { +pub fn app_log_entry_prefix(key_maps: &RadrootsAppKeyMapConfig) -> AppLogResult<String> { let param = app_datastore_param_key(key_maps, "log_entry")?; Ok(param("")) } pub async fn app_log_entries_load<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppLogResult<Vec<AppLogEntry>> { let entries = datastore.entries().await.map_err(AppLogError::Datastore)?; let prefix = app_log_entry_prefix(key_maps)?; @@ -452,7 +452,7 @@ pub async fn app_log_entries_load<T: RadrootsClientDatastore>( pub async fn app_log_entries_clear<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, ) -> AppLogResult<usize> { let prefix = app_log_entry_prefix(key_maps)?; let removed = datastore @@ -478,7 +478,7 @@ pub fn app_log_entries_dump(entries: &[AppLogEntry]) -> String { pub async fn app_log_entries_prune<T: RadrootsClientDatastore>( datastore: &T, - key_maps: &AppKeyMapConfig, + key_maps: &RadrootsAppKeyMapConfig, max_entries: usize, ) -> AppLogResult<usize> { let mut entries = app_log_entries_load(datastore, key_maps).await?; @@ -569,7 +569,7 @@ mod tests { }; use crate::{ app_key_maps_default, - AppConfigError, + RadrootsAppConfigError, APP_DATASTORE_KEY_LOG_ENTRY, }; use async_trait::async_trait; @@ -751,7 +751,7 @@ mod tests { #[test] fn log_entry_error_includes_context() { - let err = AppConfigError::MissingKeyMap("nostr_key"); + let err = RadrootsAppConfigError::MissingKeyMap("nostr_key"); let entry = app_log_entry_error(&err); assert_eq!(entry.level, AppLogLevel::Error); assert_eq!(entry.code, err.message());