use axum::Json; use serde::Serialize; use crate::models::AppConfig; use crate::modules; use crate::error::AppError; /// API response wrapper #[derive(Serialize)] pub struct ApiResponse { pub success: bool, pub data: Option, pub error: Option, } impl ApiResponse { pub fn success(data: T) -> Json { Json(Self { success: true, data: Some(data), error: None, }) } } /// Load configuration pub async fn load_config() -> Result>, AppError> { let config = modules::load_app_config().map_err(AppError::Config)?; Ok(ApiResponse::success(config)) } /// Save configuration pub async fn save_config( Json(config): Json, ) -> Result>, AppError> { modules::save_app_config(&config).map_err(AppError::Config)?; modules::logger::log_info("Configuration saved"); Ok(ApiResponse::success(())) }