Skip to content

Commit 650b2f5

Browse files
committed
refactor: update GraphNode structure to use GraphNodeType
1 parent 6ae7ecb commit 650b2f5

File tree

28 files changed

+150
-233
lines changed

28 files changed

+150
-233
lines changed

core/src/ten_manager/src/designer/graphs/nodes/delete.rs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ use anyhow::Result;
1111
use serde::{Deserialize, Serialize};
1212
use uuid::Uuid;
1313

14-
use ten_rust::{
15-
graph::{node::GraphNode, Graph},
16-
pkg_info::{pkg_type::PkgType, pkg_type_and_name::PkgTypeAndName},
14+
use ten_rust::graph::{
15+
node::{GraphNode, GraphNodeType},
16+
Graph,
1717
};
1818

1919
use crate::{
@@ -50,8 +50,8 @@ pub fn graph_delete_extension_node(
5050
// Find and remove the matching node.
5151
let original_nodes_len = graph.nodes.len();
5252
graph.nodes.retain(|node| {
53-
!(node.type_and_name.pkg_type == PkgType::Extension
54-
&& node.type_and_name.name == pkg_name
53+
!(node.type_ == GraphNodeType::Extension
54+
&& node.name == pkg_name
5555
&& node.addon == addon
5656
&& node.app == app
5757
&& node.extension_group == extension_group)
@@ -184,10 +184,8 @@ pub async fn delete_graph_node_endpoint(
184184
if let Some(property) = &mut pkg_info.property {
185185
// Create the GraphNode we want to remove
186186
let node_to_remove = GraphNode {
187-
type_and_name: PkgTypeAndName {
188-
pkg_type: PkgType::Extension,
189-
name: request_payload.name.to_string(),
190-
},
187+
type_: GraphNodeType::Extension,
188+
name: request_payload.name.to_string(),
191189
addon: request_payload.addon.to_string(),
192190
extension_group: request_payload
193191
.extension_group
@@ -208,9 +206,7 @@ pub async fn delete_graph_node_endpoint(
208206
Some(&nodes_to_remove),
209207
None,
210208
) {
211-
eprintln!(
212-
"Warning: Failed to update property.json file: {e}"
213-
);
209+
eprintln!("Warning: Failed to update property.json file: {e}");
214210
}
215211
}
216212
}

core/src/ten_manager/src/designer/graphs/nodes/get.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ use serde::{Deserialize, Serialize};
1212
use ten_rust::pkg_info::get_pkg_info_for_extension_addon;
1313
use uuid::Uuid;
1414

15-
use ten_rust::graph::node::GraphNode;
16-
use ten_rust::pkg_info::pkg_type::PkgType;
17-
use ten_rust::pkg_info::pkg_type_and_name::PkgTypeAndName;
15+
use ten_rust::graph::node::{GraphNode, GraphNodeType};
1816

1917
use crate::designer::common::{
2018
get_designer_api_msg_from_pkg, get_designer_property_hashmap_from_pkg,
@@ -56,16 +54,16 @@ impl TryFrom<GraphNode> for GraphNodesSingleResponseData {
5654
type Error = anyhow::Error;
5755

5856
fn try_from(node: GraphNode) -> Result<Self, Self::Error> {
59-
if node.type_and_name.pkg_type != PkgType::Extension {
57+
if node.type_ != GraphNodeType::Extension {
6058
return Err(anyhow!(
6159
"Graph node '{}' is not of type 'extension'",
62-
node.type_and_name.name
60+
node.name
6361
));
6462
}
6563

6664
Ok(GraphNodesSingleResponseData {
6765
addon: node.addon,
68-
name: node.type_and_name.name,
66+
name: node.name,
6967
extension_group: node.extension_group,
7068
app: node.app,
7169
api: None,
@@ -78,10 +76,8 @@ impl TryFrom<GraphNode> for GraphNodesSingleResponseData {
7876
impl From<GraphNodesSingleResponseData> for GraphNode {
7977
fn from(designer_extension: GraphNodesSingleResponseData) -> Self {
8078
GraphNode {
81-
type_and_name: PkgTypeAndName {
82-
pkg_type: PkgType::Extension,
83-
name: designer_extension.name,
84-
},
79+
type_: GraphNodeType::Extension,
80+
name: designer_extension.name,
8581
addon: designer_extension.addon,
8682
extension_group: designer_extension.extension_group,
8783
app: designer_extension.app,
@@ -113,7 +109,8 @@ pub async fn get_graph_nodes_endpoint(
113109
let error_response = ErrorResponse::from_error(
114110
&err,
115111
format!(
116-
"Error fetching runtime extensions for graph '{graph_id}'"
112+
"Error fetching runtime extensions for graph \
113+
'{graph_id}'"
117114
)
118115
.as_str(),
119116
);
@@ -133,7 +130,7 @@ pub async fn get_graph_nodes_endpoint(
133130
if let Some(pkg_info) = pkg_info {
134131
resp_extensions.push(GraphNodesSingleResponseData {
135132
addon: extension_graph_node.addon.clone(),
136-
name: extension_graph_node.type_and_name.name.clone(),
133+
name: extension_graph_node.name.clone(),
137134
extension_group: extension_graph_node.extension_group.clone(),
138135
app: extension_graph_node.app.clone(),
139136
api: pkg_info.manifest.api.as_ref().map(|api| DesignerApi {

core/src/ten_manager/src/designer/graphs/nodes/mod.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@ use serde::{Deserialize, Serialize};
1717

1818
use ten_rust::base_dir_pkg_info::PkgsInfoInApp;
1919
use ten_rust::graph::graph_info::GraphInfo;
20-
use ten_rust::graph::node::GraphNode;
20+
use ten_rust::graph::node::{GraphNode, GraphNodeType};
2121
use ten_rust::pkg_info::manifest::api::ManifestApiMsg;
2222
use ten_rust::pkg_info::manifest::api::{
2323
ManifestApiCmdResult, ManifestApiPropertyAttributes,
2424
};
25-
use ten_rust::pkg_info::pkg_type::PkgType;
26-
use ten_rust::pkg_info::pkg_type_and_name::PkgTypeAndName;
2725
use ten_rust::pkg_info::value_type::ValueType;
2826
use uuid::Uuid;
2927

@@ -188,10 +186,8 @@ pub fn update_graph_node_in_property_all_fields(
188186
{
189187
// Create the graph node.
190188
let new_node = GraphNode {
191-
type_and_name: PkgTypeAndName {
192-
pkg_type: PkgType::Extension,
193-
name: node_name.to_string(),
194-
},
189+
type_: GraphNodeType::Extension,
190+
name: node_name.to_string(),
195191
addon: addon_name.to_string(),
196192
extension_group: extension_group_name.clone(),
197193
app: app_uri.clone(),
@@ -233,9 +229,7 @@ pub fn update_graph_node_in_property_all_fields(
233229
nodes_to_remove,
234230
nodes_to_modify_property,
235231
) {
236-
eprintln!(
237-
"Warning: Failed to update property.json file: {e}"
238-
);
232+
eprintln!("Warning: Failed to update property.json file: {e}");
239233
}
240234
}
241235
}

core/src/ten_manager/src/designer/graphs/nodes/property/update.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ fn update_node_property_in_graph(
5050
) -> Result<()> {
5151
// Find the node in the graph.
5252
let graph_node = graph_info.graph.nodes.iter_mut().find(|node| {
53-
node.type_and_name.name == request_payload.name
53+
node.name == request_payload.name
5454
&& node.addon == request_payload.addon
5555
&& node.extension_group == request_payload.extension_group
5656
&& node.app == request_payload.app

core/src/ten_manager/src/designer/graphs/nodes/replace.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ pub async fn replace_graph_node_endpoint(
7979

8080
// Find the graph node in the graph.
8181
let graph_node = graph_info.graph.nodes.iter_mut().find(|node| {
82-
node.type_and_name.name == request_payload.name
83-
&& node.app == request_payload.app
82+
node.name == request_payload.name && node.app == request_payload.app
8483
});
8584

8685
if graph_node.is_none() {

core/src/ten_manager/src/designer/graphs/update.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ use std::sync::Arc;
88

99
use actix_web::{web, HttpResponse, Responder};
1010
use serde::{Deserialize, Serialize};
11-
use ten_rust::graph::node::GraphNode;
11+
use ten_rust::graph::node::{GraphNode, GraphNodeType};
1212
use ten_rust::graph::{connection::GraphConnection, GraphExposedMessage};
13-
use ten_rust::pkg_info::pkg_type::PkgType;
14-
use ten_rust::pkg_info::pkg_type_and_name::PkgTypeAndName;
1513
use uuid::Uuid;
1614

1715
use crate::{
@@ -38,10 +36,8 @@ pub struct GraphNodeForUpdate {
3836
impl GraphNodeForUpdate {
3937
fn to_graph_node(&self) -> GraphNode {
4038
GraphNode {
41-
type_and_name: PkgTypeAndName {
42-
pkg_type: PkgType::Extension,
43-
name: self.name.clone(),
44-
},
39+
type_: GraphNodeType::Extension,
40+
name: self.name.clone(),
4541
addon: self.addon.clone(),
4642
extension_group: self.extension_group.clone(),
4743
app: self.app.clone(),

core/src/ten_manager/src/designer/messages/compatible.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl From<CompatibleExtensionAndMsg<'_>>
8181
GetCompatibleMsgsSingleResponseData {
8282
app: compatible.extension.app.clone(),
8383
extension_group: compatible.extension.extension_group.clone(),
84-
extension: compatible.extension.type_and_name.name.clone(),
84+
extension: compatible.extension.name.clone(),
8585
msg_type: compatible.msg_type,
8686
msg_direction: compatible.msg_direction,
8787
msg_name: compatible.msg_name,
@@ -96,7 +96,7 @@ fn get_extension_graph_node<'a>(
9696
extension_name: &str,
9797
) -> Result<&'a GraphNode> {
9898
for extension in extension_graph_nodes {
99-
if extension.type_and_name.name == extension_name
99+
if extension.name == extension_name
100100
&& extension.extension_group.as_ref() == extension_group.as_ref()
101101
&& extension.app == *app
102102
{

core/src/ten_manager/src/graph/connections/add.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,10 @@ fn check_nodes_exist(
130130
dest_extension: &str,
131131
) -> Result<()> {
132132
// Validate that source node exists.
133-
let src_node_exists = graph.nodes.iter().any(|node| {
134-
node.type_and_name.name == src_extension && node.app == *src_app
135-
});
133+
let src_node_exists = graph
134+
.nodes
135+
.iter()
136+
.any(|node| node.name == src_extension && node.app == *src_app);
136137

137138
if !src_node_exists {
138139
return Err(anyhow::anyhow!(
@@ -144,9 +145,10 @@ fn check_nodes_exist(
144145
}
145146

146147
// Validate that destination node exists.
147-
let dest_node_exists = graph.nodes.iter().any(|node| {
148-
node.type_and_name.name == dest_extension && node.app == *dest_app
149-
});
148+
let dest_node_exists = graph
149+
.nodes
150+
.iter()
151+
.any(|node| node.name == dest_extension && node.app == *dest_app);
150152

151153
if !dest_node_exists {
152154
return Err(anyhow::anyhow!(

core/src/ten_manager/src/graph/nodes/add.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
//
77
use anyhow::Result;
88

9-
use ten_rust::{
10-
graph::{node::GraphNode, Graph},
11-
pkg_info::{pkg_type::PkgType, pkg_type_and_name::PkgTypeAndName},
9+
use ten_rust::graph::{
10+
node::{GraphNode, GraphNodeType},
11+
Graph,
1212
};
1313

1414
/// Checks if a node exists in the graph.
@@ -21,7 +21,7 @@ fn check_node_exist(
2121
let src_node_exists = graph
2222
.nodes
2323
.iter()
24-
.any(|node| node.type_and_name.name == extension && node.app == *app);
24+
.any(|node| node.name == extension && node.app == *app);
2525

2626
if src_node_exists {
2727
return Err(anyhow::anyhow!(
@@ -50,10 +50,8 @@ pub fn graph_add_extension_node(
5050

5151
// Create new GraphNode.
5252
let node = GraphNode {
53-
type_and_name: PkgTypeAndName {
54-
pkg_type: PkgType::Extension,
55-
name: pkg_name.to_string(),
56-
},
53+
type_: GraphNodeType::Extension,
54+
name: pkg_name.to_string(),
5755
addon: addon.to_string(),
5856
extension_group: extension_group.clone(),
5957
app: app.clone(),

core/src/ten_manager/src/graph/nodes/mod.rs

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
pub mod add;
88
pub mod validate;
99

10-
use std::str::FromStr;
11-
1210
use anyhow::Result;
1311
use serde_json::Value;
1412

@@ -181,23 +179,17 @@ fn remove_nodes_from_array(
181179
// Match the type.
182180
let type_match = match item_obj.get("type") {
183181
Some(Value::String(item_type)) => {
184-
if let Ok(pkg_type) =
185-
ten_rust::pkg_info::pkg_type::PkgType::from_str(
186-
item_type,
187-
)
188-
{
189-
pkg_type == remove_node.type_and_name.pkg_type
190-
} else {
191-
false
192-
}
182+
// For GraphNodeType::Extension, the string is
183+
// "extension"
184+
item_type == "extension"
193185
}
194186
_ => false,
195187
};
196188

197189
// Match the name.
198190
let name_match = match item_obj.get("name") {
199191
Some(Value::String(item_name)) => {
200-
item_name == &remove_node.type_and_name.name
192+
item_name == &remove_node.name
201193
}
202194
_ => false,
203195
};
@@ -270,23 +262,16 @@ fn modify_node(nodes_array: &mut Vec<Value>, modify_nodes: &[GraphNode]) {
270262
// Match the type.
271263
let type_match = match node_obj.get("type") {
272264
Some(Value::String(node_type)) => {
273-
if let Ok(pkg_type) =
274-
ten_rust::pkg_info::pkg_type::PkgType::from_str(
275-
node_type,
276-
)
277-
{
278-
pkg_type == modify_node.type_and_name.pkg_type
279-
} else {
280-
false
281-
}
265+
// For GraphNodeType::Extension, the string is "extension"
266+
node_type == "extension"
282267
}
283268
_ => false,
284269
};
285270

286271
// Match the name.
287272
let name_match = match node_obj.get("name") {
288273
Some(Value::String(node_name)) => {
289-
node_name == &modify_node.type_and_name.name
274+
node_name == &modify_node.name
290275
}
291276
_ => false,
292277
};
@@ -340,7 +325,7 @@ fn update_connections_for_removed_nodes(
340325
// Create a list of node identifiers to remove.
341326
let nodes_names_to_remove: Vec<(String, Option<String>)> = remove_nodes
342327
.iter()
343-
.map(|node| (node.type_and_name.name.clone(), node.app.clone()))
328+
.map(|node| (node.name.clone(), node.app.clone()))
344329
.collect();
345330

346331
if let Some(Value::Array(connections_array)) =

core/src/ten_manager/tests/test_case/designer/graphs/nodes/delete.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,7 @@ mod tests {
338338
{
339339
// Check if the node is gone.
340340
let node_exists = graph_info.graph.nodes.iter().any(|node| {
341-
node.type_and_name.name == "test_delete_node"
342-
&& node.addon == "test_addon"
341+
node.name == "test_delete_node" && node.addon == "test_addon"
343342
});
344343
assert!(!node_exists, "Node should have been deleted");
345344
} else {

core/src/ten_manager/tests/test_case/designer/graphs/nodes/replace.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ mod tests {
265265
let graph_info = graphs_cache.get(&graph_id).unwrap();
266266

267267
// Assuming there's at least one node in the graph.
268-
graph_info.graph.nodes.first().unwrap().type_and_name.name.clone()
268+
graph_info.graph.nodes.first().unwrap().name.clone()
269269
};
270270

271271
// Try to replace a node with an invalid property (integer instead of
@@ -424,7 +424,7 @@ mod tests {
424424
let graph_info = graphs_cache.get(&graph_id).unwrap();
425425

426426
// Assuming there's at least one node in the graph.
427-
graph_info.graph.nodes.first().unwrap().type_and_name.name.clone()
427+
graph_info.graph.nodes.first().unwrap().name.clone()
428428
};
429429

430430
// Try to replace a node with an invalid property (integer instead of
@@ -543,7 +543,7 @@ mod tests {
543543

544544
// Assuming there's at least one node in the graph.
545545
let node = graph_info.graph.nodes.first().unwrap();
546-
(node.type_and_name.name.clone(), node.app.clone())
546+
(node.name.clone(), node.app.clone())
547547
};
548548

549549
// Store the node details we'll use for replacement.
@@ -585,9 +585,7 @@ mod tests {
585585
.graph
586586
.nodes
587587
.iter()
588-
.find(|node| {
589-
node.type_and_name.name == node_name && node.app == app_uri
590-
})
588+
.find(|node| node.name == node_name && node.app == app_uri)
591589
.unwrap();
592590

593591
assert_eq!(updated_node.addon, new_addon);

0 commit comments

Comments
 (0)