@@ -31,19 +31,8 @@ def execute
3131 data_type_links_to_update = [ ]
3232
3333 sorted_data_types_response . payload . each do |data_type |
34- db_data_type = update_datatype ( data_type )
35- if db_data_type . persisted?
36- data_type_links_to_update << [ db_data_type , data_type . linked_data_type_identifiers ]
37- next
38- end
39-
40- logger . error ( message : 'Failed to update data type' ,
41- runtime_id : current_runtime . id ,
42- data_type_identifier : data_type . identifier ,
43- errors : db_data_type . errors . full_messages )
44-
45- t . rollback_and_return! ServiceResponse . error ( message : 'Failed to update data type' ,
46- error_code : :invalid_data_type , details : db_data_type . errors )
34+ db_data_type = update_datatype ( data_type , t )
35+ data_type_links_to_update << [ db_data_type , data_type . linked_data_type_identifiers ]
4736 end
4837
4938 data_type_links_to_update . each do |db_data_type , linked_data_type_identifiers |
@@ -137,7 +126,7 @@ def enqueue_runtime_compatibility_update
137126 UpdateRuntimeCompatibilityJob . perform_later ( { runtime_id : current_runtime . id } )
138127 end
139128
140- def update_datatype ( data_type )
129+ def update_datatype ( data_type , t )
141130 db_object = DataType . find_or_initialize_by ( runtime : current_runtime , identifier : data_type . identifier )
142131 db_object . removed_at = nil
143132 db_object . type = data_type . type
@@ -149,7 +138,20 @@ def update_datatype(data_type)
149138 db_object . version = data_type . version
150139 db_object . definition_source = data_type . definition_source
151140 db_object . runtime_module = runtime_module_resolver . call ( data_type )
152- db_object . save
141+
142+ unless db_object . save
143+ logger . error ( message : 'Failed to update data type' ,
144+ module_identifier : db_object . runtime_module &.identifier ,
145+ data_type_identifier : data_type . identifier ,
146+ errors : db_object . errors . full_messages )
147+
148+ t . rollback_and_return! ServiceResponse . error (
149+ message : 'Failed to update data type' ,
150+ error_code : :invalid_data_type ,
151+ details : db_object . errors
152+ )
153+ end
154+
153155 db_object
154156 end
155157
0 commit comments