impl AppState {
pub async fn load_optimization_campaigns(&self) -> anyhow::Result<()> {
if !self.optimization_campaigns_path.exists() {
return Ok(());
}
let raw = fs::read_to_string(&self.optimization_campaigns_path).await?;
let parsed = parse_optimization_campaigns_file(&raw);
*self.optimization_campaigns.write().await = parsed;
Ok(())
}
pub async fn persist_optimization_campaigns(&self) -> anyhow::Result<()> {
let payload = {
let guard = self.optimization_campaigns.read().await;
serde_json::to_string_pretty(&*guard)?
};
if let Some(parent) = self.optimization_campaigns_path.parent() {
fs::create_dir_all(parent).await?;
}
fs::write(&self.optimization_campaigns_path, payload).await?;
Ok(())
}
pub async fn load_optimization_experiments(&self) -> anyhow::Result<()> {
if !self.optimization_experiments_path.exists() {
return Ok(());
}
let raw = fs::read_to_string(&self.optimization_experiments_path).await?;
let parsed = parse_optimization_experiments_file(&raw);
*self.optimization_experiments.write().await = parsed;
Ok(())
}
pub async fn persist_optimization_experiments(&self) -> anyhow::Result<()> {
let payload = {
let guard = self.optimization_experiments.read().await;
serde_json::to_string_pretty(&*guard)?
};
if let Some(parent) = self.optimization_experiments_path.parent() {
fs::create_dir_all(parent).await?;
}
fs::write(&self.optimization_experiments_path, payload).await?;
Ok(())
}
}