/ crates / distrox-api / src / node.rs
node.rs
 1  #[derive(Debug, Clone)]
 2  pub struct GetHeadRequest {
 3      pub key: distrox_model::key::PublicKey,
 4  }
 5  
 6  #[derive(Debug, Clone)]
 7  pub struct GetHeadResponse(pub Option<distrox_model::node::NodeId>);
 8  
 9  pub struct GetHeadFlow;
10  
11  impl crate::flow::Flow for GetHeadFlow {
12      type Request = GetHeadRequest;
13      type Response = GetHeadResponse;
14  
15      type Error = NodeError;
16  }
17  
18  #[derive(Debug, Clone)]
19  pub struct SetHeadRequest {
20      pub key: distrox_model::key::PublicKey,
21      pub id: distrox_model::node::NodeId,
22  }
23  
24  #[derive(Debug, Clone)]
25  pub struct SetHeadResponse(pub ());
26  
27  pub struct SetHeadFlow;
28  
29  impl crate::flow::Flow for SetHeadFlow {
30      type Request = SetHeadRequest;
31      type Response = SetHeadResponse;
32  
33      type Error = NodeError;
34  }
35  
36  #[derive(Debug, Clone)]
37  pub struct GetNodeRequest {
38      pub id: distrox_model::node::NodeId,
39  }
40  
41  #[derive(Debug, Clone)]
42  pub struct GetNodeResponse(
43      pub  Option<(
44          distrox_model::node::Node,
45          nonempty::NonEmpty<distrox_model::node::Signature>,
46      )>,
47  );
48  
49  pub struct GetNodeFlow;
50  
51  impl crate::flow::Flow for GetNodeFlow {
52      type Request = GetNodeRequest;
53      type Response = GetNodeResponse;
54  
55      type Error = NodeError;
56  }
57  
58  #[derive(Debug, Clone)]
59  pub struct AddNodeRequest {
60      pub id: distrox_model::node::NodeId,
61      pub node: distrox_model::node::Node,
62      pub signature: nonempty::NonEmpty<distrox_model::node::Signature>,
63  }
64  
65  #[derive(Debug, Clone)]
66  pub struct AddNodeResponse(pub ());
67  
68  pub struct AddNodeFlow;
69  
70  impl crate::flow::Flow for AddNodeFlow {
71      type Request = AddNodeRequest;
72      type Response = AddNodeResponse;
73  
74      type Error = NodeError;
75  }
76  
77  #[derive(Debug, thiserror::Error)]
78  #[error(transparent)]
79  pub struct NodeError(pub tower::BoxError);