From 53a3dca76c6a2d365f65c0c7ca0e3c1fb4f79bcc Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 29 Jun 2022 11:19:01 -0400 Subject: [PATCH] LibraryElements: Delete invalid connections before deleting element (#50519) (#51550) (cherry picked from commit 189b7f9c0b554ddb2e3b7d127afc997ce6c070f9) Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com> --- pkg/services/libraryelements/database.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/services/libraryelements/database.go b/pkg/services/libraryelements/database.go index 9b4470224c6..2a654451438 100644 --- a/pkg/services/libraryelements/database.go +++ b/pkg/services/libraryelements/database.go @@ -27,6 +27,8 @@ SELECT DISTINCT , (SELECT COUNT(connection_id) FROM ` + models.LibraryElementConnectionTableName + ` WHERE element_id = le.id AND kind=1) AS connected_dashboards` ) +const deleteInvalidConnections = "DELETE FROM library_element_connection WHERE connection_id IN (SELECT connection_id as id FROM library_element_connection WHERE element_id=? EXCEPT SELECT id from dashboard)" + func getFromLibraryElementDTOWithMeta(dialect migrator.Dialect) string { user := dialect.Quote("user") userJoin := ` @@ -179,6 +181,12 @@ func (l *LibraryElementService) deleteLibraryElement(c context.Context, signedIn if err := l.requirePermissionsOnFolder(c, signedInUser, element.FolderID); err != nil { return err } + + // Delete any hanging/invalid connections + if _, err = session.Exec(deleteInvalidConnections, element.ID); err != nil { + return err + } + var connectionIDs []struct { ConnectionID int64 `xorm:"connection_id"` }