futu_mcp/tools/
order_relations.rs1use std::sync::Arc;
4
5use futu_net::client::FutuClient;
6use rmcp::{RoleServer, handler::server::wrapper::Parameters, service::RequestContext};
7
8use crate::handlers;
9use crate::tool_args::ProtoJsonReq;
10
11use super::FutuServer;
12
13impl FutuServer {
14 async fn futu_get_order_relations_impl(
15 &self,
16 Parameters(req): Parameters<ProtoJsonReq>,
17 req_ctx: RequestContext<RoleServer>,
18 ) -> std::result::Result<String, String> {
19 let c2s = handlers::proto_json::parse_c2s_json::<futu_proto::trd_get_order_relations::C2s>(
20 "get-order-relations",
21 &req.c2s_json,
22 )
23 .map_err(|error| error.to_string())?;
24 let client = self
25 .read_client_or_err(
26 "futu_get_order_relations",
27 &req_ctx,
28 req.api_key.as_deref(),
29 Some(c2s.header.acc_id),
30 )
31 .await?;
32 FutuServer::wrap_result(order_relations(client, c2s).await)
33 }
34}
35
36async fn order_relations(
37 client: Arc<FutuClient>,
38 c2s: futu_proto::trd_get_order_relations::C2s,
39) -> anyhow::Result<String> {
40 handlers::proto_json::order_relations(&client, c2s).await
41}
42
43include!(concat!(
44 env!("OUT_DIR"),
45 "/generated_mcp_routes_order_relations.rs"
46));