Parcourir la source

feat: carry dynamicOutputs to the runner and the editor

fszontagh il y a 1 mois
Parent
commit
7eb0cc3ada

+ 2 - 0
proto/runner.proto

@@ -94,6 +94,7 @@ message NodeDefinition {
     repeated NodeInput inputs = 10;
     repeated NodeOutput outputs = 11;
     bool is_trigger = 12;
+    string dynamic_outputs = 13;  // JSON, ports derived from a placed node's config
 }
 
 message NodeInput {
@@ -249,6 +250,7 @@ message NodeDefinitionWithCode {
     string owner_id = 14;
     int64 created_at = 15;
     int64 updated_at = 16;
+    string dynamic_outputs = 17;  // JSON, ports derived from a placed node's config
 }
 
 // Get all nodes request

+ 8 - 0
src/webserver/api/node_controller.cpp

@@ -117,6 +117,10 @@ void NodeController::listNodes(const httplib::Request& req, httplib::Response& r
         }
         n["outputs"] = outputs;
 
+        if (!node.dynamic_outputs.is_null()) {
+            n["dynamicOutputs"] = node.dynamic_outputs;
+        }
+
         nodes_json.push_back(n);
     }
 
@@ -182,6 +186,10 @@ void NodeController::getNode(const httplib::Request& req, httplib::Response& res
     }
     n["outputs"] = outputs;
 
+    if (!node.dynamic_outputs.is_null()) {
+        n["dynamicOutputs"] = node.dynamic_outputs;
+    }
+
     sendJson(res, n);
 }
 

+ 3 - 0
src/webserver/grpc/node_sync_service.cpp

@@ -39,6 +39,9 @@ void NodeSyncServiceImpl::storedNodeToProto(const nodes::StoredNode& node,
     proto->set_owner_id(node.owner_id);
     proto->set_created_at(node.created_at);
     proto->set_updated_at(node.updated_at);
+    if (!node.dynamic_outputs.is_null()) {
+        proto->set_dynamic_outputs(node.dynamic_outputs.dump());
+    }
 
     for (const auto& input : node.inputs) {
         auto* proto_input = proto->add_inputs();