From 5106b946f3f0e2a0f794bc39dc29c8f01d545d67 Mon Sep 17 00:00:00 2001 From: Tom Neuber Date: Wed, 9 Apr 2025 01:57:33 +0200 Subject: [PATCH] feat(grafana): add new api response for dashboard versions --- pkg/grafana/dashboard_version.go | 21 ++++++++++++++++----- pkg/grafana/schema/dashboard_version.go | 11 +++++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/pkg/grafana/dashboard_version.go b/pkg/grafana/dashboard_version.go index d3c6a96..c2764dd 100644 --- a/pkg/grafana/dashboard_version.go +++ b/pkg/grafana/dashboard_version.go @@ -5,6 +5,7 @@ import ( "fmt" "net/url" "strconv" + "strings" "time" "git.ar21.de/yolokube/grafana-backuper/pkg/grafana/schema" @@ -167,15 +168,25 @@ func (c *DashboardVersionClient) list( return nil, nil, err } - var body schema.DashboardVersionListResponse - + var versions schema.DashboardVersionListResponseV10 + body := schema.DashboardVersionListResponse{} resp, err := c.client.do(req, &body) if err != nil { - return nil, resp, err + if !strings.Contains(err.Error(), "cannot unmarshal object") { + return nil, resp, err + } + bodyV10 := schema.DashboardVersionListResponseV10{} + resp, err = c.client.do(req, &bodyV10) + if err != nil { + return nil, resp, err + } + versions = bodyV10 + } else { + versions = body.Versions } - dashboardVersions := make([]*DashboardVersion, 0, len(body)) - for _, dashboardVersion := range body { + dashboardVersions := make([]*DashboardVersion, 0, len(versions)) + for _, dashboardVersion := range versions { dashboardVersions = append(dashboardVersions, DashboardVersionFromSchema(dashboardVersion)) } diff --git a/pkg/grafana/schema/dashboard_version.go b/pkg/grafana/schema/dashboard_version.go index 45f2643..829dafb 100644 --- a/pkg/grafana/schema/dashboard_version.go +++ b/pkg/grafana/schema/dashboard_version.go @@ -1,6 +1,8 @@ package schema -import "time" +import ( + "time" +) type DashboardVersion struct { ID uint `json:"id"` @@ -15,4 +17,9 @@ type DashboardVersion struct { Data any `json:"data"` } -type DashboardVersionListResponse []DashboardVersion +type DashboardVersionListResponseV10 []DashboardVersion + +type DashboardVersionListResponse struct { + ContinueToken string `json:"continueToken"` + Versions DashboardVersionListResponseV10 `json:"versions"` +}