Chore: Add dashboard retrieval by FolderUID (#80288)

* Add dashboard retrieval by uid

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
This commit is contained in:
Tania 2024-01-11 15:02:13 +01:00 committed by GitHub
parent 12135998e6
commit 1947919516
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 6 deletions

View File

@ -813,7 +813,7 @@ func (d *dashboardStore) GetDashboard(ctx context.Context, query *dashboards.Get
var queryResult *dashboards.Dashboard
err := d.store.WithDbSession(ctx, func(sess *db.Session) error {
// nolint:staticcheck
if query.ID == 0 && len(query.UID) == 0 && (query.Title == nil || query.FolderID == nil) {
if query.ID == 0 && len(query.UID) == 0 && (query.Title == nil || (query.FolderID == nil && query.FolderUID == "")) {
return dashboards.ErrDashboardIdentifierNotSet
}
@ -823,15 +823,17 @@ func (d *dashboardStore) GetDashboard(ctx context.Context, query *dashboards.Get
dashboard.Title = *query.Title
mustCols = append(mustCols, "title")
}
// nolint:staticcheck
if query.FolderID != nil {
if query.FolderUID != "" {
dashboard.FolderUID = query.FolderUID
mustCols = append(mustCols, "folder_uid")
} else if query.FolderID != nil { // nolint:staticcheck
// nolint:staticcheck
dashboard.FolderID = *query.FolderID
mustCols = append(mustCols, "folder_id")
}
has, err := sess.MustCols(mustCols...).Get(&dashboard)
if err != nil {
return err
} else if !has {

View File

@ -108,6 +108,23 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
require.False(t, queryResult.IsFolder)
})
t.Run("Should be able to get dashboard by title and folderUID", func(t *testing.T) {
setup()
query := dashboards.GetDashboardQuery{
Title: util.Pointer("test dash 23"),
FolderUID: savedFolder.UID,
OrgID: 1,
}
queryResult, err := dashboardStore.GetDashboard(context.Background(), &query)
require.NoError(t, err)
require.Equal(t, queryResult.Title, "test dash 23")
require.Equal(t, queryResult.Slug, "test-dash-23")
require.Equal(t, queryResult.ID, savedDash.ID)
require.Equal(t, queryResult.UID, savedDash.UID)
require.False(t, queryResult.IsFolder)
})
t.Run("Should not be able to get dashboard by title alone", func(t *testing.T) {
setup()
query := dashboards.GetDashboardQuery{

View File

@ -248,8 +248,9 @@ type GetDashboardQuery struct {
UID string
Title *string
// Deprecated: use FolderUID instead
FolderID *int64
OrgID int64
FolderID *int64
FolderUID string
OrgID int64
}
type DashboardTagCloudItem struct {