diff --git a/pkg/topology/component_config.go b/pkg/topology/component_config.go index 832070261..61ad33d4f 100644 --- a/pkg/topology/component_config.go +++ b/pkg/topology/component_config.go @@ -41,6 +41,14 @@ var ComponentConfigRun = &job.Job{ } run.History.IncrSuccess() } + + // Cleanup dead relationships + componentIDsWithConfigs := lo.Map(components, func(c pkg.Component, _ int) string { return c.ID.String() }) + if err := db.Table("config_component_relationships"). + Where("component_id NOT IN ?", componentIDsWithConfigs). + Update("deleted_at", duty.Now()).Error; err != nil { + return fmt.Errorf("error cleaning up old config_component_relationships: %w", err) + } return nil }, } diff --git a/pkg/topology/component_relationship.go b/pkg/topology/component_relationship.go index b979ffdf8..90146b8a8 100644 --- a/pkg/topology/component_relationship.go +++ b/pkg/topology/component_relationship.go @@ -51,6 +51,15 @@ var ComponentRelationshipSync = &job.Job{ } ctx.History.IncrSuccess() } + + // Cleanup dead relationships + componentIDsWithSelectors := lo.Map(components, func(c models.Component, _ int) string { return c.ID.String() }) + if err := ctx.DB().Table("component_relationships"). + Where("relationship_id NOT IN ?", componentIDsWithSelectors). + Update("deleted_at", duty.Now()).Error; err != nil { + return fmt.Errorf("error cleaning up dead component_relationships: %w", err) + } + return nil }, }