jellyflow_core/ops/transaction/
endpoints.rs1use serde::{Deserialize, Serialize};
2
3use crate::core::{Edge, PortId};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
7pub struct EdgeEndpoints {
8 pub from: PortId,
9 pub to: PortId,
10}
11
12impl EdgeEndpoints {
13 pub fn new(from: PortId, to: PortId) -> Self {
14 Self { from, to }
15 }
16
17 pub fn from_edge(edge: &Edge) -> Self {
18 Self::new(edge.from, edge.to)
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25 use crate::core::{EdgeKind, EdgeReconnectable};
26
27 #[test]
28 fn edge_endpoints_can_snapshot_edge_ports() {
29 let from = PortId::new();
30 let to = PortId::new();
31 let edge = Edge {
32 hidden: false,
33 selectable: Some(true),
34 focusable: None,
35 interaction_width: None,
36 deletable: Some(false),
37 reconnectable: Some(EdgeReconnectable::Bool(true)),
38 ..Edge::new(EdgeKind::Data, from, to)
39 };
40
41 assert_eq!(
42 EdgeEndpoints::from_edge(&edge),
43 EdgeEndpoints::new(from, to)
44 );
45 }
46}