feat(grafana): add new api response for dashboard versions
All checks were successful
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Tom Neuber 2025-04-09 01:57:33 +02:00
parent 77d9784796
commit 5106b946f3
Signed by: tom
GPG key ID: F17EFE4272D89FF6
2 changed files with 25 additions and 7 deletions

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"net/url" "net/url"
"strconv" "strconv"
"strings"
"time" "time"
"git.ar21.de/yolokube/grafana-backuper/pkg/grafana/schema" "git.ar21.de/yolokube/grafana-backuper/pkg/grafana/schema"
@ -167,15 +168,25 @@ func (c *DashboardVersionClient) list(
return nil, nil, err return nil, nil, err
} }
var body schema.DashboardVersionListResponse var versions schema.DashboardVersionListResponseV10
body := schema.DashboardVersionListResponse{}
resp, err := c.client.do(req, &body) resp, err := c.client.do(req, &body)
if err != nil { 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)) dashboardVersions := make([]*DashboardVersion, 0, len(versions))
for _, dashboardVersion := range body { for _, dashboardVersion := range versions {
dashboardVersions = append(dashboardVersions, DashboardVersionFromSchema(dashboardVersion)) dashboardVersions = append(dashboardVersions, DashboardVersionFromSchema(dashboardVersion))
} }

View file

@ -1,6 +1,8 @@
package schema package schema
import "time" import (
"time"
)
type DashboardVersion struct { type DashboardVersion struct {
ID uint `json:"id"` ID uint `json:"id"`
@ -15,4 +17,9 @@ type DashboardVersion struct {
Data any `json:"data"` Data any `json:"data"`
} }
type DashboardVersionListResponse []DashboardVersion type DashboardVersionListResponseV10 []DashboardVersion
type DashboardVersionListResponse struct {
ContinueToken string `json:"continueToken"`
Versions DashboardVersionListResponseV10 `json:"versions"`
}