@@ -19,6 +19,13 @@ def execute
1919 return ServiceResponse . error ( message : 'Missing permission' , error_code : :missing_permission )
2020 end
2121
22+ if namespace_project . primary_runtime . nil?
23+ return ServiceResponse . error (
24+ message : 'Project has no primary runtime' ,
25+ error_code : :no_primary_runtime
26+ )
27+ end
28+
2229 transactional do |t |
2330 settings = [ ]
2431 if params . key? ( :flow_settings )
@@ -83,7 +90,9 @@ def execute
8390 def create_node_function ( node_function_id , input_nodes , t )
8491 node_function = input_nodes . find { |n | n . id == node_function_id }
8592
86- runtime_function_definition = SagittariusSchema . object_from_id ( node_function . runtime_function_id )
93+ runtime_function_definition = namespace_project . primary_runtime . runtime_function_definitions . find_by (
94+ id : node_function . runtime_function_id . model_id
95+ )
8796 if runtime_function_definition . nil?
8897 t . rollback_and_return! ServiceResponse . error (
8998 message : 'Invalid runtime function id' ,
@@ -93,7 +102,9 @@ def create_node_function(node_function_id, input_nodes, t)
93102
94103 params = [ ]
95104 node_function . parameters . each do |parameter |
96- runtime_parameter = SagittariusSchema . object_from_id ( parameter . runtime_parameter_definition_id )
105+ runtime_parameter = runtime_function_definition . parameters . find_by (
106+ id : parameter . runtime_parameter_definition_id . model_id
107+ )
97108 if runtime_parameter . nil?
98109 t . rollback_and_return! ServiceResponse . error (
99110 message : 'Invalid runtime parameter id' ,
@@ -116,11 +127,12 @@ def create_node_function(node_function_id, input_nodes, t)
116127 next
117128 end
118129
119- reference_value = SagittariusSchema . object_from_id (
120- parameter . value . reference_value . node_function_id
130+ referenced_node = NodeFunction . joins ( :runtime_function ) . find_by (
131+ id : parameter . value . reference_value . node_function_id . model_id ,
132+ runtime_function_definitions : { runtime_id : namespace_project . primary_runtime . id }
121133 )
122134
123- if reference_value . nil?
135+ if referenced_node . nil?
124136 t . rollback_and_return! ServiceResponse . error (
125137 message : 'Referenced node function not found' ,
126138 error_code : :referenced_value_not_found
@@ -130,8 +142,8 @@ def create_node_function(node_function_id, input_nodes, t)
130142 params << NodeParameter . create (
131143 runtime_parameter : runtime_parameter ,
132144 reference_value : ReferenceValue . create (
133- node_function : reference_value ,
134- data_type_identifier : get_data_type_identifier ( parameter . value . reference_value . data_type_identifier ) ,
145+ node_function : referenced_node ,
146+ data_type_identifier : get_data_type_identifier ( parameter . value . reference_value . data_type_identifier , t ) ,
135147 depth : parameter . value . reference_value . depth ,
136148 node : parameter . value . reference_value . node ,
137149 scope : parameter . value . reference_value . scope ,
@@ -158,11 +170,21 @@ def create_node_function(node_function_id, input_nodes, t)
158170
159171 private
160172
161- def get_data_type_identifier ( identifier )
173+ def get_data_type_identifier ( identifier , t )
162174 return DataTypeIdentifier . create ( generic_key : identifier . generic_key ) if identifier . generic_key . present?
163175
164176 if identifier . generic_type . present?
165- data_type = SagittariusSchema . object_from_id ( identifier . generic_type . data_type_id )
177+ data_type = namespace_project . primary_runtime . data_types . find_by (
178+ id : identifier . generic_type . data_type_id . model_id
179+ )
180+
181+ if data_type . nil?
182+ t . rollback_and_return! ServiceResponse . error (
183+ message : 'Data type not found' ,
184+ error_code : :data_type_not_found
185+ )
186+ end
187+
166188 mappers = identifier . generic_type . mappers . map do |mapper |
167189 GenericMapper . create (
168190 generic_mapper_id : mapper . generic_mapper_id ,
@@ -175,7 +197,16 @@ def get_data_type_identifier(identifier)
175197
176198 return if identifier . data_type_id . blank?
177199
178- DataTypeIdentifier . create ( data_type : SagittariusSchema . object_from_id ( identifier . data_type_id ) )
200+ data_type = namespace_project . primary_runtime . data_types . find_by ( id : identifier . data_type_id . model_id )
201+
202+ if data_type . nil?
203+ t . rollback_and_return! ServiceResponse . error (
204+ message : 'Data type not found' ,
205+ error_code : :data_type_not_found
206+ )
207+ end
208+
209+ DataTypeIdentifier . create ( data_type : data_type )
179210 end
180211 end
181212 end
0 commit comments