use serde::{Deserialize, Serialize}; /// 桌面端列表里的一行代理。 #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AgentRow { #[serde(rename = "agent_id")] pub id: Uuid, pub name: String, #[serde(skip)] secret: String, } use thiserror::Error; /// 读写代理时出的错。 #[derive(Error, Debug)] pub enum AgentError { /// 这个 id 没有代理 #[error("agent {id} 不存在")] NotFound { id: Uuid }, /// 调用上游失败 #[error("上游错误")] Upstream(#[from] Other), } use axum::routing::get; /// 按 id 取一个代理。 #[get("/agents/{id}")] async fn get_agent(Path(id): Path) -> Result, StatusCode> { todo!() } let app = Router::new().route("/health", get(health)); use sqlx::query_as; // 按 id 取一行。 let row = sqlx::query_as!(AgentRow, "SELECT id, name FROM agents WHERE id = $1", id); use tauri::State; /// 让窗口把这一行改名。 #[tauri::command] async fn rename_agent(state: State, name: String) -> Result { todo!() }