@@ -961,19 +961,22 @@ impl SetupStatusCheck {
961961 desired_state : Option < & RelationshipSetupState > ,
962962 existing : & CombinedState < RelationshipSetupState > ,
963963 ) -> Self {
964- let data_clear = existing
965- . current
966- . as_ref ( )
967- . filter ( |existing_current| {
968- desired_state. as_ref ( ) . is_none_or ( |desired| {
969- desired. check_compatible ( existing_current)
970- == SetupStateCompatibility :: NotCompatible
971- } )
972- } )
973- . map ( |existing_current| DataClearAction {
974- core_elem_type : key. typ . clone ( ) ,
975- dependent_node_labels : existing_current. dependent_node_labels . clone ( ) ,
976- } ) ;
964+ let mut core_elem_type_to_clear = None ;
965+ let mut dependent_node_labels_to_clear = IndexSet :: new ( ) ;
966+ for v in existing. possible_versions ( ) {
967+ if desired_state. as_ref ( ) . is_none_or ( |desired| {
968+ desired. check_compatible ( v) == SetupStateCompatibility :: NotCompatible
969+ } ) {
970+ if core_elem_type_to_clear. is_none ( ) {
971+ core_elem_type_to_clear = Some ( key. typ . clone ( ) ) ;
972+ }
973+ dependent_node_labels_to_clear. extend ( v. dependent_node_labels . iter ( ) . cloned ( ) ) ;
974+ }
975+ }
976+ let data_clear = core_elem_type_to_clear. map ( |core_elem_type| DataClearAction {
977+ core_elem_type,
978+ dependent_node_labels : dependent_node_labels_to_clear. into_iter ( ) . collect ( ) ,
979+ } ) ;
977980
978981 let change_type = match ( desired_state, existing. possible_versions ( ) . next ( ) ) {
979982 ( Some ( _) , Some ( _) ) => {
@@ -1027,7 +1030,7 @@ impl ResourceSetupStatusCheck for SetupStatusCheck {
10271030 async fn apply_change ( & self ) -> Result < ( ) > {
10281031 let graph = self . graph_pool . get_graph ( & self . conn_spec ) . await ?;
10291032 if let Some ( data_clear) = & self . data_clear {
1030- let delete_rel_query = neo4rs:: query ( & formatdoc ! { "
1033+ let delete_query = neo4rs:: query ( & formatdoc ! { "
10311034 CALL {{
10321035 MATCH {matcher}
10331036 WITH {var_name}
@@ -1042,7 +1045,7 @@ impl ResourceSetupStatusCheck for SetupStatusCheck {
10421045 _ => "" . to_string( ) ,
10431046 } ,
10441047 } ) ;
1045- graph. run ( delete_rel_query ) . await ?;
1048+ graph. run ( delete_query ) . await ?;
10461049
10471050 for node_label in & data_clear. dependent_node_labels {
10481051 let delete_node_query = neo4rs:: query ( & formatdoc ! { "
0 commit comments