Mountain/IPC/WindServiceHandlers/Configuration/
Update.rs1#![allow(unused_variables, dead_code, unused_imports)]
2
3use std::sync::Arc;
6
7use serde_json::Value;
8
9use crate::{RunTime::ApplicationRunTime::ApplicationRunTime, dev_log};
10
11pub async fn Fn(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
12 use CommonLibrary::{
13 Configuration::{
14 ConfigurationProvider::ConfigurationProvider,
15 DTO::{ConfigurationOverridesDTO::ConfigurationOverridesDTO, ConfigurationTarget::ConfigurationTarget},
16 },
17 Environment::Requires::Requires,
18 };
19
20 let key = Arguments
21 .get(0)
22 .ok_or("Missing configuration key".to_string())?
23 .as_str()
24 .ok_or("Configuration key must be a string".to_string())?;
25
26 let value = Arguments.get(1).ok_or("Missing configuration value".to_string())?.clone();
27
28 let provider:Arc<dyn ConfigurationProvider> = RunTime.Environment.Require();
29
30 provider
31 .UpdateConfigurationValue(
32 key.to_string(),
33 value,
34 ConfigurationTarget::User,
35 ConfigurationOverridesDTO::default(),
36 None,
37 )
38 .await
39 .map_err(|Error| format!("Failed to update configuration: {}", Error))?;
40
41 dev_log!("config", "updated: {}", key);
42
43 Ok(Value::Null)
44}