dashboard_version.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package sqlstore
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. func init() {
  7. bus.AddHandler("sql", GetDashboardVersion)
  8. bus.AddHandler("sql", GetDashboardVersions)
  9. }
  10. // GetDashboardVersion gets the dashboard version for the given dashboard ID and version number.
  11. func GetDashboardVersion(query *m.GetDashboardVersionQuery) error {
  12. version := m.DashboardVersion{}
  13. has, err := x.Where("dashboard_version.dashboard_id=? AND dashboard_version.version=? AND dashboard.org_id=?", query.DashboardId, query.Version, query.OrgId).
  14. Join("LEFT", "dashboard", `dashboard.id = dashboard_version.dashboard_id`).
  15. Get(&version)
  16. if err != nil {
  17. return err
  18. }
  19. if !has {
  20. return m.ErrDashboardVersionNotFound
  21. }
  22. version.Data.Set("id", version.DashboardId)
  23. query.Result = &version
  24. return nil
  25. }
  26. // GetDashboardVersions gets all dashboard versions for the given dashboard ID.
  27. func GetDashboardVersions(query *m.GetDashboardVersionsQuery) error {
  28. err := x.Table("dashboard_version").
  29. Select(`dashboard_version.id,
  30. dashboard_version.dashboard_id,
  31. dashboard_version.parent_version,
  32. dashboard_version.restored_from,
  33. dashboard_version.version,
  34. dashboard_version.created,
  35. dashboard_version.created_by as created_by_id,
  36. dashboard_version.message,
  37. dashboard_version.data,`+
  38. dialect.Quote("user")+`.login as created_by`).
  39. Join("LEFT", "user", `dashboard_version.created_by = `+dialect.Quote("user")+`.id`).
  40. Join("LEFT", "dashboard", `dashboard.id = dashboard_version.dashboard_id`).
  41. Where("dashboard_version.dashboard_id=? AND dashboard.org_id=?", query.DashboardId, query.OrgId).
  42. OrderBy("dashboard_version.version DESC").
  43. Limit(query.Limit, query.Start).
  44. Find(&query.Result)
  45. if err != nil {
  46. return err
  47. }
  48. if len(query.Result) < 1 {
  49. return m.ErrNoVersionsForDashboardId
  50. }
  51. return nil
  52. }