From 908fb31bfa8e328a2f97967210b35f50f21e24b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Oct 2025 01:09:23 +0000 Subject: [PATCH 1/2] Update dependency tucana to v0.0.36 --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 4aeb47f3..9b27e5ee 100644 --- a/Gemfile +++ b/Gemfile @@ -79,7 +79,7 @@ gem 'good_job', '~> 4.0' gem 'rotp' gem 'grpc', '~> 1.67' -gem 'tucana', '0.0.35' +gem 'tucana', '0.0.36' gem 'code0-identities', '~> 0.0.1' diff --git a/Gemfile.lock b/Gemfile.lock index b62d07a8..77953983 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -368,7 +368,7 @@ GEM test-prof (1.4.4) thor (1.4.0) timeout (0.4.3) - tucana (0.0.35) + tucana (0.0.36) grpc (~> 1.64) tzinfo (2.0.6) concurrent-ruby (~> 1.0) @@ -422,7 +422,7 @@ DEPENDENCIES simplecov (~> 0.22.0) simplecov-cobertura (~> 3.0) test-prof (~> 1.0) - tucana (= 0.0.35) + tucana (= 0.0.36) tzinfo-data RUBY VERSION From 588224979ea63921ec2a934b89ada7f4ef56c310 Mon Sep 17 00:00:00 2001 From: Niklas van Schrick Date: Sat, 11 Oct 2025 20:06:37 +0200 Subject: [PATCH 2/2] Migrate flow to tucana 0.0.36 --- app/models/flow.rb | 15 ++++- app/models/node_function.rb | 2 +- spec/models/flow_spec.rb | 107 +++++++++++++++++++++--------------- 3 files changed, 77 insertions(+), 47 deletions(-) diff --git a/app/models/flow.rb b/app/models/flow.rb index 040d13bf..612a7164 100644 --- a/app/models/flow.rb +++ b/app/models/flow.rb @@ -18,7 +18,20 @@ def to_grpc input_type_identifier: input_type&.identifier, return_type_identifier: return_type&.identifier, settings: flow_settings.map(&:to_grpc), - starting_node: starting_node.to_grpc + starting_node_id: starting_node.id, + node_functions: collect_node_functions ) end + + private + + def collect_node_functions + current_node = starting_node + nodes = [] + until current_node.nil? + nodes << current_node.to_grpc + current_node = current_node.next_node + end + nodes + end end diff --git a/app/models/node_function.rb b/app/models/node_function.rb index b5fe0c4c..6248a761 100644 --- a/app/models/node_function.rb +++ b/app/models/node_function.rb @@ -45,7 +45,7 @@ def to_grpc database_id: id, runtime_function_id: runtime_function.runtime_name, parameters: node_parameters.map(&:to_grpc), - next_node: next_node&.to_grpc + next_node_id: next_node&.id ) end end diff --git a/spec/models/flow_spec.rb b/spec/models/flow_spec.rb index 8bb149e6..d4115ede 100644 --- a/spec/models/flow_spec.rb +++ b/spec/models/flow_spec.rb @@ -17,56 +17,73 @@ describe '#to_grpc' do let(:flow) do - create(:flow, - flow_settings: [ - create(:flow_setting, - flow_setting_id: 'example_key', - object: { some_key: 'some_value' }) - ], - starting_node: create(:node_function, - node_parameters: [ - create(:node_parameter, - runtime_parameter: create(:runtime_parameter_definition, - data_type: create(:data_type_identifier, - generic_key: 'T'))) - ])) + create( + :flow, + flow_settings: [ + create( + :flow_setting, + flow_setting_id: 'example_key', + object: { some_key: 'some_value' } + ) + ], + starting_node: create( + :node_function, + node_parameters: [ + create( + :node_parameter, + runtime_parameter: create( + :runtime_parameter_definition, + data_type: create( + :data_type_identifier, + generic_key: 'T' + ) + ) + ) + ] + ) + ) end it 'matches the model' do grpc_object = flow.to_grpc - expect(grpc_object.to_h).to eq({ - flow_id: flow.id, - project_id: flow.project.id, - type: flow.flow_type.identifier, - starting_node: { - database_id: flow.starting_node.id, - runtime_function_id: flow.starting_node.runtime_function.runtime_name, - parameters: [ - { - database_id: flow.starting_node.node_parameters.first.id, - runtime_parameter_id: - flow.starting_node.node_parameters.first.runtime_parameter.runtime_name, - value: { - literal_value: { - string_value: flow.starting_node.node_parameters.first.literal_value, - }, - }, - } - ], - }, - settings: [ - database_id: flow.flow_settings.first.id, - flow_setting_id: flow.flow_settings.first.flow_setting_id, - object: { - fields: { - 'some_key' => { - string_value: flow.flow_settings.first.object['some_key'], - }, - }, - } - ], - }) + expect(grpc_object.to_h).to eq( + { + flow_id: flow.id, + project_id: flow.project.id, + type: flow.flow_type.identifier, + node_functions: [ + { + database_id: flow.starting_node.id, + runtime_function_id: flow.starting_node.runtime_function.runtime_name, + parameters: [ + { + database_id: flow.starting_node.node_parameters.first.id, + runtime_parameter_id: + flow.starting_node.node_parameters.first.runtime_parameter.runtime_name, + value: { + literal_value: { + string_value: flow.starting_node.node_parameters.first.literal_value, + }, + }, + } + ], + } + ], + starting_node_id: flow.starting_node.id, + settings: [ + database_id: flow.flow_settings.first.id, + flow_setting_id: flow.flow_settings.first.flow_setting_id, + object: { + fields: { + 'some_key' => { + string_value: flow.flow_settings.first.object['some_key'], + }, + }, + } + ], + } + ) end end end