commit d2052a98723de2f7bf09daeaff43d423219ae5a1
parent ab56d5a769ac5512985867077670f8c75fa02e3d
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 21:09:56 +0000
app: add config hooks for init assets
- add asset config fields for sql and geocoder URLs
- expose accessors for init asset configuration
- include asset config in app config defaults
- add unit tests for asset defaults and accessors
Diffstat:
2 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/app/src/config.rs b/app/src/config.rs
@@ -219,10 +219,25 @@ impl AppDatastoreConfig {
}
}
+#[derive(Debug, Clone, PartialEq, Eq, Default)]
+pub struct AppAssetConfig {
+ pub sql_wasm_url: Option<String>,
+ pub geocoder_db_url: Option<String>,
+}
+
+pub fn app_assets_sql_wasm_url(config: &AppConfig) -> Option<&str> {
+ config.assets.sql_wasm_url.as_deref()
+}
+
+pub fn app_assets_geocoder_db_url(config: &AppConfig) -> 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,
}
impl AppConfig {
@@ -231,6 +246,7 @@ impl AppConfig {
Self {
datastore: AppDatastoreConfig::default_config(key_maps),
keystore: AppKeystoreConfig::default_config(),
+ assets: AppAssetConfig::default(),
}
}
@@ -238,6 +254,7 @@ impl AppConfig {
Self {
datastore: AppDatastoreConfig::default_config(key_maps),
keystore: AppKeystoreConfig::default_config(),
+ assets: AppAssetConfig::default(),
}
}
@@ -272,6 +289,9 @@ mod tests {
app_keystore_key_nostr_default,
app_keystore_key,
app_datastore_param_key,
+ app_assets_geocoder_db_url,
+ app_assets_sql_wasm_url,
+ AppAssetConfig,
AppConfig,
AppConfigError,
AppDatastoreConfig,
@@ -336,6 +356,13 @@ mod tests {
}
#[test]
+ fn asset_config_defaults_empty() {
+ let config = AppAssetConfig::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);
@@ -420,4 +447,11 @@ mod tests {
APP_KEYSTORE_KEY_NOSTR_DEFAULT
);
}
+
+ #[test]
+ fn asset_accessors_read_defaults() {
+ let config = app_config_default();
+ assert_eq!(app_assets_sql_wasm_url(&config), None);
+ assert_eq!(app_assets_geocoder_db_url(&config), None);
+ }
}
diff --git a/app/src/lib.rs b/app/src/lib.rs
@@ -52,6 +52,8 @@ pub use config::{
app_datastore_obj_key,
app_datastore_obj_key_app_data,
app_datastore_obj_key_cfg_data,
+ app_assets_geocoder_db_url,
+ app_assets_sql_wasm_url,
app_keystore_key_maps_default,
app_keystore_key_maps_validate,
app_keystore_key,
@@ -61,6 +63,7 @@ pub use config::{
AppConfig,
AppConfigError,
AppConfigResult,
+ AppAssetConfig,
AppDatastoreConfig,
AppDatastoreKeyMap,
AppDatastoreKeyObjMap,