dashboard_version.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. if query.Limit == 0 {
  29. query.Limit = 1000
  30. }
  31. err := x.Table("dashboard_version").
  32. Select(`dashboard_version.id,
  33. dashboard_version.dashboard_id,
  34. dashboard_version.parent_version,
  35. dashboard_version.restored_from,
  36. dashboard_version.version,
  37. dashboard_version.created,
  38. dashboard_version.created_by as created_by_id,
  39. dashboard_version.message,
  40. dashboard_version.data,`+
  41. dialect.Quote("user")+`.login as created_by`).
  42. Join("LEFT", "user", `dashboard_version.created_by = `+dialect.Quote("user")+`.id`).
  43. Join("LEFT", "dashboard", `dashboard.id = dashboard_version.dashboard_id`).
  44. Where("dashboard_version.dashboard_id=? AND dashboard.org_id=?", query.DashboardId, query.OrgId).
  45. OrderBy("dashboard_version.version DESC").
  46. Limit(query.Limit, query.Start).
  47. Find(&query.Result)
  48. if err != nil {
  49. return err
  50. }
  51. if len(query.Result) < 1 {
  52. return m.ErrNoVersionsForDashboardId
  53. }
  54. return nil
  55. }