Mountain/IPC/WindServiceHandlers/
Configuration.rs1#![allow(non_snake_case, unused_variables, dead_code, unused_imports)]
2
3use std::sync::Arc;
6
7use serde_json::{Value, json};
8use CommonLibrary::Configuration::DTO::{
9 ConfigurationOverridesDTO as ConfigurationOverridesDTOModule,
10 ConfigurationTarget as ConfigurationTargetModule,
11};
12type ConfigurationOverridesDTO = ConfigurationOverridesDTOModule::ConfigurationOverridesDTO;
13type ConfigurationTarget = ConfigurationTargetModule::ConfigurationTarget;
14
15use CommonLibrary::{Configuration::ConfigurationProvider::ConfigurationProvider, Environment::Requires::Requires};
16
17use crate::{RunTime::ApplicationRunTime::ApplicationRunTime, dev_log};
18
19pub async fn ConfigurationGet(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
21 let key = Arguments
22 .get(0)
23 .ok_or("Missing configuration key".to_string())?
24 .as_str()
25 .ok_or("Configuration key must be a string".to_string())?;
26
27 let provider:Arc<dyn ConfigurationProvider> = RunTime.Environment.Require();
28
29 let value = provider
30 .GetConfigurationValue(Some(key.to_string()), ConfigurationOverridesDTO::default())
31 .await
32 .map_err(|Error| format!("Failed to get configuration: {}", Error))?;
33
34 dev_log!("config", "get: {} = {:?}", key, value);
35 Ok(value)
36}
37
38pub async fn ConfigurationUpdate(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
40 let key = Arguments
41 .get(0)
42 .ok_or("Missing configuration key".to_string())?
43 .as_str()
44 .ok_or("Configuration key must be a string".to_string())?;
45
46 let value = Arguments.get(1).ok_or("Missing configuration value".to_string())?.clone();
47
48 let provider:Arc<dyn ConfigurationProvider> = RunTime.Environment.Require();
49
50 provider
51 .UpdateConfigurationValue(
52 key.to_string(),
53 value,
54 ConfigurationTarget::User,
55 ConfigurationOverridesDTO::default(),
56 None,
57 )
58 .await
59 .map_err(|Error| format!("Failed to update configuration: {}", Error))?;
60
61 dev_log!("config", "updated: {}", key);
62 Ok(Value::Null)
63}
64
65pub async fn WorkbenchConfiguration(RunTime:Arc<ApplicationRunTime>, _Arguments:Vec<Value>) -> Result<Value, String> {
67 let provider:Arc<dyn ConfigurationProvider> = RunTime.Environment.Require();
68
69 let config = provider
70 .GetConfigurationValue(None, ConfigurationOverridesDTO::default())
71 .await
72 .map_err(|Error| format!("Failed to get workbench configuration: {}", Error))?;
73
74 dev_log!("config", "workbench config retrieved");
75 Ok(config)
76}
77
78pub async fn EnvironmentGet(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
80 let key = Arguments
81 .get(0)
82 .ok_or("Missing environment key".to_string())?
83 .as_str()
84 .ok_or("Environment key must be a string".to_string())?;
85
86 let value = std::env::var(key).map_err(|Error| format!("Failed to get environment variable: {}", Error))?;
87
88 dev_log!("config", "env_get: {}", key);
89 Ok(json!(value))
90}