From 43e34f308691d1fdd05f6de0151cb8bbc589a0a1 Mon Sep 17 00:00:00 2001 From: Selene Date: Tue, 17 May 2022 09:37:44 +0200 Subject: [PATCH] Dashboards: Allow to retrieve dashboards by uid (#48522) * Add the possibility to get the dashboards by uid * Fix --- pkg/models/dashboards.go | 5 +++-- pkg/services/sqlstore/dashboard.go | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/models/dashboards.go b/pkg/models/dashboards.go index d345e0833c0..b784dcf66eb 100644 --- a/pkg/models/dashboards.go +++ b/pkg/models/dashboards.go @@ -435,8 +435,9 @@ type GetDashboardTagsQuery struct { } type GetDashboardsQuery struct { - DashboardIds []int64 - Result []*Dashboard + DashboardIds []int64 + DashboardUIds []string + Result []*Dashboard } type GetDashboardPermissionsForUserQuery struct { diff --git a/pkg/services/sqlstore/dashboard.go b/pkg/services/sqlstore/dashboard.go index 4f961ee2c92..4ef72b2daf0 100644 --- a/pkg/services/sqlstore/dashboard.go +++ b/pkg/services/sqlstore/dashboard.go @@ -4,6 +4,8 @@ import ( "context" "strings" + "xorm.io/xorm" + "github.com/prometheus/client_golang/prometheus" "github.com/grafana/grafana/pkg/models" @@ -223,13 +225,19 @@ func (ss *SQLStore) GetDashboardTags(ctx context.Context, query *models.GetDashb func (ss *SQLStore) GetDashboards(ctx context.Context, query *models.GetDashboardsQuery) error { return ss.WithDbSession(ctx, func(dbSession *DBSession) error { - if len(query.DashboardIds) == 0 { + if len(query.DashboardIds) == 0 && len(query.DashboardUIds) == 0 { return models.ErrCommandValidationFailed } var dashboards = make([]*models.Dashboard, 0) + var session *xorm.Session + if len(query.DashboardIds) > 0 { + session = dbSession.In("id", query.DashboardIds) + } else { + session = dbSession.In("uid", query.DashboardUIds) + } - err := dbSession.In("id", query.DashboardIds).Find(&dashboards) + err := session.Find(&dashboards) query.Result = dashboards return err })