Mountain/IPC/WindServiceHandler/
Configuration.rs1#![allow(non_snake_case)]
2
3use std::sync::Arc;
6
7use serde_json::Value;
8use CommonLibrary::{Configuration::ConfigurationProvider::ConfigurationProvider, Environment::Requires::Requires};
9
10use crate::{RunTime::ApplicationRunTime::ApplicationRunTime, dev_log};
11use super::{ConfigurationOverridesDTO, ConfigurationTarget};
12
13pub async fn handle_configuration_get(Runtime:Arc<ApplicationRunTime>, Args:Vec<Value>) -> Result<Value, String> {
15 let Key = Args
16 .get(0)
17 .ok_or("Missing configuration key".to_string())?
18 .as_str()
19 .ok_or("Configuration key must be a string".to_string())?;
20
21 let Provider:Arc<dyn ConfigurationProvider> = Runtime.Environment.Require();
22
23 let ConfigValue = Provider
24 .GetConfigurationValue(Some(Key.to_string()), ConfigurationOverridesDTO::default())
25 .await
26 .map_err(|E| format!("Failed to get configuration: {}", E))?;
27
28 dev_log!("config", "get: {} = {:?}", Key, ConfigValue);
29 Ok(ConfigValue)
30}
31
32pub async fn handle_configuration_update(Runtime:Arc<ApplicationRunTime>, Args:Vec<Value>) -> Result<Value, String> {
34 let Key = Args
35 .get(0)
36 .ok_or("Missing configuration key".to_string())?
37 .as_str()
38 .ok_or("Configuration key must be a string".to_string())?;
39
40 let ConfigValue = Args.get(1).ok_or("Missing configuration value".to_string())?.clone();
41
42 let Provider:Arc<dyn ConfigurationProvider> = Runtime.Environment.Require();
43
44 Provider
45 .UpdateConfigurationValue(
46 Key.to_string(),
47 ConfigValue,
48 ConfigurationTarget::User,
49 ConfigurationOverridesDTO::default(),
50 None,
51 )
52 .await
53 .map_err(|E| format!("Failed to update configuration: {}", E))?;
54
55 dev_log!("config", "updated: {}", Key);
56 Ok(Value::Null)
57}
58
59pub async fn handle_workbench_configuration(
61 Runtime:Arc<ApplicationRunTime>,
62 _Args:Vec<Value>,
63) -> Result<Value, String> {
64 let Provider:Arc<dyn ConfigurationProvider> = Runtime.Environment.Require();
65
66 let Config = Provider
67 .GetConfigurationValue(None, ConfigurationOverridesDTO::default())
68 .await
69 .map_err(|E| format!("Failed to get workbench configuration: {}", E))?;
70
71 dev_log!("config", "workbench config retrieved");
72 Ok(Config)
73}