dashboard_snapshot.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package sqlstore
  2. import (
  3. "time"
  4. "github.com/go-xorm/xorm"
  5. "github.com/grafana/grafana/pkg/bus"
  6. m "github.com/grafana/grafana/pkg/models"
  7. )
  8. func init() {
  9. bus.AddHandler("sql", CreateDashboardSnapshot)
  10. bus.AddHandler("sql", GetDashboardSnapshot)
  11. }
  12. func CreateDashboardSnapshot(cmd *m.CreateDashboardSnapshotCommand) error {
  13. return inTransaction(func(sess *xorm.Session) error {
  14. // never
  15. var expires = time.Now().Add(time.Hour * 24 * 365 * 50)
  16. if cmd.Expires > 0 {
  17. expires = time.Now().Add(time.Second * time.Duration(cmd.Expires))
  18. }
  19. snapshot := &m.DashboardSnapshot{
  20. Key: cmd.Key,
  21. OrgId: cmd.OrgId,
  22. Dashboard: cmd.Dashboard,
  23. Expires: expires,
  24. Created: time.Now(),
  25. Updated: time.Now(),
  26. }
  27. _, err := sess.Insert(snapshot)
  28. cmd.Result = snapshot
  29. return err
  30. })
  31. }
  32. func GetDashboardSnapshot(query *m.GetDashboardSnapshotQuery) error {
  33. snapshot := m.DashboardSnapshot{Key: query.Key}
  34. has, err := x.Get(&snapshot)
  35. if err != nil {
  36. return err
  37. } else if has == false {
  38. return m.ErrNotFound
  39. }
  40. query.Result = &snapshot
  41. return nil
  42. }