use portaki_sdk::host;
use portaki_sdk::prelude::*;
use serde::{Deserialize, Serialize};
const CONFIG_KEY: &str = "config";
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct ModuleConfig {
#[serde(default)]
pub greeting: String,
}
pub fn load_config() -> Result<ModuleConfig> {
let Some(bytes) = host::kv::get(CONFIG_KEY)? else {
return Ok(ModuleConfig::default());
};
serde_json::from_slice(&bytes)
.map_err(|error| PortakiError::Storage(format!("invalid config JSON: {error}")))
}
pub fn save_config(config: &ModuleConfig) -> Result<()> {
let bytes = serde_json::to_vec(config)
.map_err(|error| PortakiError::Storage(format!("config serialize: {error}")))?;
host::kv::set(CONFIG_KEY, &bytes, None)
}