Files
grafana/pkg/services/dashboardversion/model.go
Kristin Laemmert 42be0e106f fix(dashboard version service): add DashboardUID to query and responses (#60800)
* fix(dashboard version service): add DashboardUID to query and responses

The DashboardUID was not populated in the response from Get and ListDashboardVersions. This adds the DashboardUID to the Get query (it was already in List) and populated the DashboardUID in the returned DashboardVersionDTOs.
2023-02-07 12:27:38 -05:00

98 lines
3.2 KiB
Go

package dashver
import (
"errors"
"time"
"github.com/grafana/grafana/pkg/components/simplejson"
)
var (
ErrDashboardVersionNotFound = errors.New("dashboard version not found")
ErrNoVersionsForDashboardID = errors.New("no dashboard versions found for the given DashboardId")
)
// DashboardVersion represents a dashboard version in the database. Ideally this
// will be moved into dashverimpl and unexported, but there are a few test
// fixtures that insert DashboardVersions directly into a database which must be
// refactored first.
type DashboardVersion struct {
ID int64 `json:"id" xorm:"pk autoincr 'id'" db:"id"`
DashboardID int64 `json:"dashboardId" xorm:"dashboard_id" db:"dashboard_id"`
ParentVersion int `json:"parentVersion" db:"parent_version"`
RestoredFrom int `json:"restoredFrom" db:"restored_from"`
Version int `json:"version" db:"version"`
Created time.Time `json:"created" db:"created"`
CreatedBy int64 `json:"createdBy" db:"created_by"`
Message string `json:"message" db:"message"`
Data *simplejson.Json `json:"data" db:"data"`
}
// ToDTO converts a DashboardVersion to a DashboardVersionDTO.
func (v *DashboardVersion) ToDTO(dashUid string) *DashboardVersionDTO {
return &DashboardVersionDTO{
ID: v.ID,
DashboardID: v.DashboardID,
DashboardUID: dashUid,
ParentVersion: v.ParentVersion,
RestoredFrom: v.RestoredFrom,
Version: v.Version,
Created: v.Created,
CreatedBy: v.CreatedBy,
Message: v.Message,
Data: v.Data,
}
}
// GetDashboardVersionQuery is used to Get a dashboard version. Only one of
// DashboardID and DashboardUID are required.
type GetDashboardVersionQuery struct {
DashboardID int64
DashboardUID string
OrgID int64
Version int
}
type DeleteExpiredVersionsCommand struct {
DeletedRows int64
}
type ListDashboardVersionsQuery struct {
DashboardID int64
DashboardUID string
OrgID int64
Limit int
Start int
}
type DashboardVersionDTO struct {
ID int64 `json:"id"`
DashboardID int64 `json:"dashboardId"`
DashboardUID string `json:"dashboardUid"`
ParentVersion int `json:"parentVersion"`
RestoredFrom int `json:"restoredFrom"`
Version int `json:"version"`
Created time.Time `json:"created"`
CreatedBy int64 `json:"createdBy"`
Message string `json:"message"`
Data *simplejson.Json `json:"data" db:"data"`
}
// DashboardVersionMeta extends the DashboardVersionDTO with the names
// associated with the UserIds, overriding the field with the same name from
// the DashboardVersionDTO model.
type DashboardVersionMeta struct {
ID int64 `json:"id"`
DashboardID int64 `json:"dashboardId"`
DashboardUID string `json:"uid"`
ParentVersion int `json:"parentVersion"`
RestoredFrom int `json:"restoredFrom"`
Version int `json:"version"`
Created time.Time `json:"created"`
Message string `json:"message"`
Data *simplejson.Json `json:"data"`
CreatedBy string `json:"createdBy"`
}