49 lines
1.1 KiB
Rust
49 lines
1.1 KiB
Rust
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<Uuid>) -> Result<Json<AgentRow>, 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<App>, name: String) -> Result<String, String> {
|
|
todo!()
|
|
}
|