Files
DevFlow/src-tauri/src/commands/settings.rs
绝尘 892a642bd4 优化: R-PD-10 commands err_str helper 统一错误格式化(87 处)
mod.rs 加 pub fn err_str<E: ToString>,commands/ 10 文件 87 处 .map_err(|e| e.to_string()) → .map_err(err_str),残留 0(10 处复杂表达式 e 用于 format!/anyhow 保留)。行为零变化,统一入口为未来加日志/分类留点。批5,cargo workspace 0
2026-06-15 05:45:04 +08:00

50 lines
1.3 KiB
Rust

//! 通用应用设置 KV IPC — 前端 localStorage 迁移目标
//!
//! 4 个 command 读写 `app_settings` 表(key/value JSON 字符串),承载主题、面板折叠态、
//! 最近使用项等前端持久化偏好。返回统一 `Result<T, String>`。
use std::collections::HashMap;
use tauri::State;
use crate::state::AppState;
use super::err_str;
/// 取单个 key 的值(JSON 字符串),不存在返回 None
#[tauri::command]
pub async fn settings_get(
state: State<'_, AppState>,
key: String,
) -> Result<Option<String>, String> {
state.settings.get(&key).await.map_err(err_str)
}
/// 写 key/value(`INSERT OR REPLACE`),刷新 updated_at
#[tauri::command]
pub async fn settings_set(
state: State<'_, AppState>,
key: String,
value: String,
) -> Result<bool, String> {
state.settings.set(&key, &value).await.map_err(err_str)
}
/// 取全部 key/value(前端启动时一次性拉回恢复偏好)
#[tauri::command]
pub async fn settings_get_all(
state: State<'_, AppState>,
) -> Result<HashMap<String, String>, String> {
let rows = state.settings.get_all().await.map_err(err_str)?;
Ok(rows.into_iter().collect())
}
/// 删除单个 key
#[tauri::command]
pub async fn settings_delete(
state: State<'_, AppState>,
key: String,
) -> Result<bool, String> {
state.settings.delete(&key).await.map_err(err_str)
}