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 kind: EdgeKind::Data,
33 from,
34 to,
35 hidden: false,
36 selectable: Some(true),
37 focusable: None,
38 interaction_width: None,
39 deletable: Some(false),
40 reconnectable: Some(EdgeReconnectable::Bool(true)),
41 };
42
43 assert_eq!(
44 EdgeEndpoints::from_edge(&edge),
45 EdgeEndpoints::new(from, to)
46 );
47 }
48}