From 3bc9f10bb3941b5194b590cd10fd9b305d169c5d Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 21 Jan 2025 19:35:33 +0300 Subject: [PATCH] Dashboards/SQL: Improve SQL query behavior (#99253) * update legacy dashboard SQL * merge main * trim message --- pkg/apis/dashboard/register.go | 11 ++- .../apis/dashboard/legacy/queries_test.go | 7 ++ .../dashboard/legacy/query_dashboards.sql | 93 ++++++++++--------- .../apis/dashboard/legacy/sql_dashboards.go | 25 +++-- .../mysql--query_dashboards-dashboard.sql | 34 +++---- ...--query_dashboards-dashboard_next_page.sql | 38 ++++---- .../mysql--query_dashboards-folders.sql | 18 ++++ .../mysql--query_dashboards-history_uid.sql | 36 +++---- ...uery_dashboards-history_uid_at_version.sql | 43 +++++---- ...ery_dashboards-history_uid_second_page.sql | 38 ++++---- .../postgres--query_dashboards-dashboard.sql | 34 +++---- ...--query_dashboards-dashboard_next_page.sql | 38 ++++---- .../postgres--query_dashboards-folders.sql | 18 ++++ ...postgres--query_dashboards-history_uid.sql | 36 +++---- ...uery_dashboards-history_uid_at_version.sql | 43 +++++---- ...ery_dashboards-history_uid_second_page.sql | 38 ++++---- .../sqlite--query_dashboards-dashboard.sql | 34 +++---- ...--query_dashboards-dashboard_next_page.sql | 38 ++++---- .../sqlite--query_dashboards-folders.sql | 18 ++++ .../sqlite--query_dashboards-history_uid.sql | 36 +++---- ...uery_dashboards-history_uid_at_version.sql | 43 +++++---- ...ery_dashboards-history_uid_second_page.sql | 38 ++++---- pkg/registry/apis/dashboard/legacy/types.go | 3 + 23 files changed, 427 insertions(+), 333 deletions(-) create mode 100755 pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-folders.sql create mode 100755 pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-folders.sql create mode 100755 pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-folders.sql diff --git a/pkg/apis/dashboard/register.go b/pkg/apis/dashboard/register.go index 2c7cf8d8b4d..3e36dd72ae2 100644 --- a/pkg/apis/dashboard/register.go +++ b/pkg/apis/dashboard/register.go @@ -4,20 +4,25 @@ import ( "fmt" "time" - "github.com/grafana/grafana/pkg/apimachinery/utils" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + + "github.com/grafana/grafana/pkg/apimachinery/utils" ) const ( GROUP = "dashboard.grafana.app" VERSION = runtime.APIVersionInternal APIVERSION = GROUP + "/" + VERSION + + // Resource constants + DASHBOARD_RESOURCE = "dashboards" + LIBRARY_PANEL_RESOURCE = "librarypanels" ) var DashboardResourceInfo = utils.NewResourceInfo(GROUP, VERSION, - "dashboards", "dashboard", "Dashboard", + DASHBOARD_RESOURCE, "dashboard", "Dashboard", func() runtime.Object { return &Dashboard{} }, func() runtime.Object { return &DashboardList{} }, utils.TableColumns{ @@ -43,7 +48,7 @@ var DashboardResourceInfo = utils.NewResourceInfo(GROUP, VERSION, ) var LibraryPanelResourceInfo = utils.NewResourceInfo(GROUP, VERSION, - "librarypanels", "librarypanel", "LibraryPanel", + LIBRARY_PANEL_RESOURCE, "librarypanel", "LibraryPanel", func() runtime.Object { return &LibraryPanel{} }, func() runtime.Object { return &LibraryPanelList{} }, utils.TableColumns{ diff --git a/pkg/registry/apis/dashboard/legacy/queries_test.go b/pkg/registry/apis/dashboard/legacy/queries_test.go index a30bc61ab02..315c9593450 100644 --- a/pkg/registry/apis/dashboard/legacy/queries_test.go +++ b/pkg/registry/apis/dashboard/legacy/queries_test.go @@ -69,6 +69,13 @@ func TestDashboardQueries(t *testing.T) { LastID: 22, }), }, + { + Name: "folders", + Data: getQuery(&DashboardQuery{ + OrgID: 2, + GetFolders: true, + }), + }, }, sqlQueryPanels: { { diff --git a/pkg/registry/apis/dashboard/legacy/query_dashboards.sql b/pkg/registry/apis/dashboard/legacy/query_dashboards.sql index 593b78e3b77..e5d532ffc87 100644 --- a/pkg/registry/apis/dashboard/legacy/query_dashboards.sql +++ b/pkg/registry/apis/dashboard/legacy/query_dashboards.sql @@ -1,48 +1,51 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - {{ if .Query.UseHistoryTable }} - dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, - dashboard_version.version, dashboard_version.message, dashboard_version.data - {{ else }} - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + {{ if .Query.UseHistoryTable }} + dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, + dashboard_version.version, dashboard_version.message, dashboard_version.data + {{ else }} + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data + {{ end }} +FROM {{ .Ident .DashboardTable }} as dashboard +{{ if .Query.UseHistoryTable }} +LEFT OUTER JOIN {{ .Ident .VersionTable }} as dashboard_version ON dashboard.id = dashboard_version.dashboard_id +{{ end }} +LEFT OUTER JOIN {{ .Ident .ProvisioningTable }} as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN {{ .Ident .UserTable }} as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN {{ .Ident .UserTable }} as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = {{ .Arg .Query.GetFolders }} + AND dashboard.org_id = {{ .Arg .Query.OrgID }} + {{ if .Query.UseHistoryTable }} + {{ if .Query.UID }} + AND dashboard.uid = {{ .Arg .Query.UID }} + {{ end }} + {{ if .Query.Version }} + AND dashboard_version.version = {{ .Arg .Query.Version }} + {{ else if .Query.LastID }} + AND dashboard_version.version < {{ .Arg .Query.LastID }} + {{ end }} + ORDER BY + dashboard_version.created ASC, + dashboard_version.version ASC, + dashboard.uid ASC + {{ else }} + {{ if .Query.UID }} + AND dashboard.uid = {{ .Arg .Query.UID }} + {{ else if .Query.LastID }} + AND dashboard.id > {{ .Arg .Query.LastID }} {{ end }} - FROM {{ .Ident .DashboardTable }} as dashboard - {{ if .Query.UseHistoryTable }} - LEFT OUTER JOIN {{ .Ident .VersionTable }} as dashboard_version ON dashboard.id = dashboard_version.dashboard_id - {{ end }} - LEFT OUTER JOIN {{ .Ident .ProvisioningTable }} as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN {{ .Ident .UserTable }} as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN {{ .Ident .UserTable }} as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = {{ .Arg .Query.OrgID }} - {{ if .Query.UseHistoryTable }} - {{ if .Query.UID }} - AND dashboard.uid = {{ .Arg .Query.UID }} - {{ end }} - {{ if .Query.Version }} - AND dashboard_version.version = {{ .Arg .Query.Version }} - {{ else if .Query.LastID }} - AND dashboard_version.version < {{ .Arg .Query.LastID }} - {{ end }} - ORDER BY dashboard_version.version DESC - {{ else }} - {{ if .Query.UID }} - AND dashboard.uid = {{ .Arg .Query.UID }} - {{ else if .Query.LastID }} - AND dashboard.id > {{ .Arg .Query.LastID }} - {{ end }} - {{ if .Query.GetTrash }} - AND dashboard.deleted IS NOT NULL - {{ else if .Query.LastID }} - AND dashboard.deleted IS NULL - {{ end }} - ORDER BY dashboard.id DESC + {{ if .Query.GetTrash }} + AND dashboard.deleted IS NOT NULL + {{ else if .Query.LastID }} + AND dashboard.deleted IS NULL {{ end }} + ORDER BY dashboard.id DESC + {{ end }} diff --git a/pkg/registry/apis/dashboard/legacy/sql_dashboards.go b/pkg/registry/apis/dashboard/legacy/sql_dashboards.go index eff5b77f259..c3a712a8811 100644 --- a/pkg/registry/apis/dashboard/legacy/sql_dashboards.go +++ b/pkg/registry/apis/dashboard/legacy/sql_dashboards.go @@ -273,6 +273,9 @@ func (a *dashboardSqlAccess) scanRow(rows *sql.Rows) (*dashboardRow, error) { } if message.String != "" { + if len(message.String) > 500 { + message.String = message.String[0:490] + "..." + } meta.SetMessage(message.String) } if folder_uid.String != "" { @@ -488,6 +491,10 @@ func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query Library lastID = p.ID item := dashboard.LibraryPanel{ + TypeMeta: metav1.TypeMeta{ + APIVersion: fmt.Sprintf("%s/%s", dashboard.GROUP, "v0alpha1"), + Kind: "LibraryPanel", + }, ObjectMeta: metav1.ObjectMeta{ Name: p.UID, CreationTimestamp: metav1.NewTime(p.Created), @@ -509,13 +516,13 @@ func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query Library } if item.Spec.Title != p.Name { - status.Warnings = append(item.Status.Warnings, fmt.Sprintf("title mismatch (expected: %s)", p.Name)) + status.Warnings = append(status.Warnings, fmt.Sprintf("title mismatch (expected: %s)", p.Name)) } if item.Spec.Description != p.Description { - status.Warnings = append(item.Status.Warnings, fmt.Sprintf("description mismatch (expected: %s)", p.Description)) + status.Warnings = append(status.Warnings, fmt.Sprintf("description mismatch (expected: %s)", p.Description)) } if item.Spec.Type != p.Type { - status.Warnings = append(item.Status.Warnings, fmt.Sprintf("type mismatch (expected: %s)", p.Type)) + status.Warnings = append(status.Warnings, fmt.Sprintf("type mismatch (expected: %s)", p.Type)) } item.Status = status @@ -530,9 +537,15 @@ func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query Library } meta.SetFolder(p.FolderUID) meta.SetCreatedBy(p.CreatedBy) - meta.SetUpdatedBy(p.UpdatedBy) - meta.SetUpdatedTimestamp(&p.Updated) - meta.SetDeprecatedInternalID(p.ID) // nolint:staticcheck + meta.SetGeneration(1) + meta.SetDeprecatedInternalID(p.ID) //nolint:staticcheck + + // Only set updated metadata if it is different + if p.UpdatedBy != p.CreatedBy || p.Updated.Sub(p.Created) > time.Second { + meta.SetUpdatedBy(p.UpdatedBy) + meta.SetUpdatedTimestamp(&p.Updated) + meta.SetGeneration(2) + } res.Items = append(res.Items, item) if len(res.Items) > limit { diff --git a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard.sql b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard.sql index 29762eca1d9..e19b106c37e 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard.sql @@ -1,18 +1,18 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM `grafana`.`dashboard` as dashboard - LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM `grafana`.`dashboard` as dashboard +LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard_next_page.sql b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard_next_page.sql index 74f5a19d482..681c40ab4d6 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard_next_page.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-dashboard_next_page.sql @@ -1,20 +1,20 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM `grafana`.`dashboard` as dashboard - LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.id > 22 - AND dashboard.deleted IS NULL - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM `grafana`.`dashboard` as dashboard +LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.id > 22 + AND dashboard.deleted IS NULL + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-folders.sql b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-folders.sql new file mode 100755 index 00000000000..4aaf2965176 --- /dev/null +++ b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-folders.sql @@ -0,0 +1,18 @@ +SELECT + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM `grafana`.`dashboard` as dashboard +LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = TRUE + AND dashboard.org_id = 2 + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid.sql b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid.sql index 6ea4a1dd7a7..f8935af3286 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid.sql @@ -1,19 +1,19 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM `grafana`.`dashboard` as dashboard - LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM `grafana`.`dashboard` as dashboard +LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_at_version.sql b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_at_version.sql index e5ee5c7c865..d85d3bbd8c8 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_at_version.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_at_version.sql @@ -1,21 +1,24 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, - dashboard_version.version, dashboard_version.message, dashboard_version.data - FROM `grafana`.`dashboard` as dashboard - LEFT OUTER JOIN `grafana`.`dashboard_version` as dashboard_version ON dashboard.id = dashboard_version.dashboard_id - LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - AND dashboard_version.version = 3 - ORDER BY dashboard_version.version DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, + dashboard_version.version, dashboard_version.message, dashboard_version.data +FROM `grafana`.`dashboard` as dashboard +LEFT OUTER JOIN `grafana`.`dashboard_version` as dashboard_version ON dashboard.id = dashboard_version.dashboard_id +LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + AND dashboard_version.version = 3 + ORDER BY + dashboard_version.created ASC, + dashboard_version.version ASC, + dashboard.uid ASC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_second_page.sql b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_second_page.sql index 81ad15476eb..d6cd4577a9a 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_second_page.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/mysql--query_dashboards-history_uid_second_page.sql @@ -1,20 +1,20 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM `grafana`.`dashboard` as dashboard - LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - AND dashboard.deleted IS NULL - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM `grafana`.`dashboard` as dashboard +LEFT OUTER JOIN `grafana`.`dashboard_provisioning` as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN `grafana`.`user` as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN `grafana`.`user` as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + AND dashboard.deleted IS NULL + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard.sql b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard.sql index 132d34e64d8..4b96079ebf6 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard.sql @@ -1,18 +1,18 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard_next_page.sql b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard_next_page.sql index f63eabf3256..7349bdf4f6d 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard_next_page.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-dashboard_next_page.sql @@ -1,20 +1,20 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.id > 22 - AND dashboard.deleted IS NULL - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.id > 22 + AND dashboard.deleted IS NULL + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-folders.sql b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-folders.sql new file mode 100755 index 00000000000..e089fb8d371 --- /dev/null +++ b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-folders.sql @@ -0,0 +1,18 @@ +SELECT + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = TRUE + AND dashboard.org_id = 2 + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid.sql b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid.sql index b2e182c9294..459e4238762 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid.sql @@ -1,19 +1,19 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_at_version.sql b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_at_version.sql index d5905e26edd..5fe3708643a 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_at_version.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_at_version.sql @@ -1,21 +1,24 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, - dashboard_version.version, dashboard_version.message, dashboard_version.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - AND dashboard_version.version = 3 - ORDER BY dashboard_version.version DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, + dashboard_version.version, dashboard_version.message, dashboard_version.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + AND dashboard_version.version = 3 + ORDER BY + dashboard_version.created ASC, + dashboard_version.version ASC, + dashboard.uid ASC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_second_page.sql b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_second_page.sql index 599554dcc3f..cd0065fb7d7 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_second_page.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/postgres--query_dashboards-history_uid_second_page.sql @@ -1,20 +1,20 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - AND dashboard.deleted IS NULL - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + AND dashboard.deleted IS NULL + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard.sql b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard.sql index 132d34e64d8..4b96079ebf6 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard.sql @@ -1,18 +1,18 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard_next_page.sql b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard_next_page.sql index f63eabf3256..7349bdf4f6d 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard_next_page.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-dashboard_next_page.sql @@ -1,20 +1,20 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.id > 22 - AND dashboard.deleted IS NULL - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.id > 22 + AND dashboard.deleted IS NULL + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-folders.sql b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-folders.sql new file mode 100755 index 00000000000..e089fb8d371 --- /dev/null +++ b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-folders.sql @@ -0,0 +1,18 @@ +SELECT + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = TRUE + AND dashboard.org_id = 2 + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid.sql b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid.sql index b2e182c9294..459e4238762 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid.sql @@ -1,19 +1,19 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_at_version.sql b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_at_version.sql index d5905e26edd..5fe3708643a 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_at_version.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_at_version.sql @@ -1,21 +1,24 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, - dashboard_version.version, dashboard_version.message, dashboard_version.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - AND dashboard_version.version = 3 - ORDER BY dashboard_version.version DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard_version.created, updated_user.uid as updated_by,updated_user.id as created_by_id, + dashboard_version.version, dashboard_version.message, dashboard_version.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_version" as dashboard_version ON dashboard.id = dashboard_version.dashboard_id +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + AND dashboard_version.version = 3 + ORDER BY + dashboard_version.created ASC, + dashboard_version.version ASC, + dashboard.uid ASC diff --git a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_second_page.sql b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_second_page.sql index 599554dcc3f..cd0065fb7d7 100755 --- a/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_second_page.sql +++ b/pkg/registry/apis/dashboard/legacy/testdata/sqlite--query_dashboards-history_uid_second_page.sql @@ -1,20 +1,20 @@ SELECT - dashboard.org_id, dashboard.id, - dashboard.uid, dashboard.folder_uid, - dashboard.deleted, plugin_id, - provisioning.name as origin_name, - provisioning.external_id as origin_path, - provisioning.check_sum as origin_key, - provisioning.updated as origin_ts, - dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, - dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, - dashboard.version, '' as message, dashboard.data - FROM "grafana"."dashboard" as dashboard - LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id - LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id - LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id - WHERE dashboard.is_folder = false - AND dashboard.org_id = 2 - AND dashboard.uid = 'UUU' - AND dashboard.deleted IS NULL - ORDER BY dashboard.id DESC + dashboard.org_id, dashboard.id, + dashboard.uid, dashboard.folder_uid, + dashboard.deleted, plugin_id, + provisioning.name as repo_name, + provisioning.external_id as repo_path, + provisioning.check_sum as repo_hash, + provisioning.updated as repo_ts, + dashboard.created, created_user.uid as created_by, dashboard.created_by as created_by_id, + dashboard.updated, updated_user.uid as updated_by, dashboard.updated_by as updated_by_id, + dashboard.version, '' as message, dashboard.data +FROM "grafana"."dashboard" as dashboard +LEFT OUTER JOIN "grafana"."dashboard_provisioning" as provisioning ON dashboard.id = provisioning.dashboard_id +LEFT OUTER JOIN "grafana"."user" as created_user ON dashboard.created_by = created_user.id +LEFT OUTER JOIN "grafana"."user" as updated_user ON dashboard.updated_by = updated_user.id +WHERE dashboard.is_folder = FALSE + AND dashboard.org_id = 2 + AND dashboard.uid = 'UUU' + AND dashboard.deleted IS NULL + ORDER BY dashboard.id DESC diff --git a/pkg/registry/apis/dashboard/legacy/types.go b/pkg/registry/apis/dashboard/legacy/types.go index ac945e090e3..cb01bfe68bb 100644 --- a/pkg/registry/apis/dashboard/legacy/types.go +++ b/pkg/registry/apis/dashboard/legacy/types.go @@ -25,6 +25,9 @@ type DashboardQuery struct { GetHistory bool Version int64 + // Only folders + GetFolders bool + // The label requirements Labels []*resource.Requirement }