Dashboards: Allow to retrieve dashboards by uid (#48522)

* Add the possibility to get the dashboards by uid

* Fix
This commit is contained in:
Selene 2022-05-17 09:37:44 +02:00 committed by GitHub
parent 84d4ce51ad
commit 43e34f3086
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 4 deletions

View File

@ -435,8 +435,9 @@ type GetDashboardTagsQuery struct {
}
type GetDashboardsQuery struct {
DashboardIds []int64
Result []*Dashboard
DashboardIds []int64
DashboardUIds []string
Result []*Dashboard
}
type GetDashboardPermissionsForUserQuery struct {

View File

@ -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
})