@@ -112,26 +112,31 @@ def update_definition_services(module_records, t)
112112 def update_module_definitions ( module_records , t )
113113 modules . each do |grpc_module |
114114 runtime_module = module_records . fetch ( grpc_module )
115- runtime_module . runtime_module_definitions . delete_all
115+ db_module_definitions = runtime_module . runtime_module_definitions . first ( grpc_module . definitions . length )
116116
117- grpc_module . definitions . each do |definition |
117+ grpc_module . definitions . each_with_index do |definition , index |
118118 next unless definition . value == :endpoint
119119
120120 endpoint = definition . endpoint
121- module_definition = runtime_module . runtime_module_definitions . build (
121+ db_module_definitions [ index ] ||= runtime_module . runtime_module_definitions . build
122+ db_module_definitions [ index ] . nilify_attributes!
123+
124+ db_module_definitions [ index ] . assign_attributes (
122125 host : endpoint . host ,
123126 port : endpoint . port ,
124127 endpoint : endpoint . endpoint
125128 )
126129
127- next if module_definition . save
130+ next if db_module_definitions [ index ] . save
128131
129132 t . rollback_and_return! ServiceResponse . error (
130133 message : 'Failed to update runtime module definition' ,
131134 error_code : :invalid_runtime_module_definition ,
132- details : module_definition . errors
135+ details : db_module_definitions [ index ] . errors
133136 )
134137 end
138+
139+ runtime_module . runtime_module_definitions . excluding ( db_module_definitions ) . delete_all
135140 end
136141 end
137142
0 commit comments