app

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

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:
Mapp/src/config.rs | 34++++++++++++++++++++++++++++++++++
Mapp/src/lib.rs | 3+++
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,