dashboard_snapshot.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. bus.AddHandler("sql", DeleteDashboardSnapshot)
  12. }
  13. func CreateDashboardSnapshot(cmd *m.CreateDashboardSnapshotCommand) error {
  14. return inTransaction(func(sess *xorm.Session) error {
  15. // never
  16. var expires = time.Now().Add(time.Hour * 24 * 365 * 50)
  17. if cmd.Expires > 0 {
  18. expires = time.Now().Add(time.Second * time.Duration(cmd.Expires))
  19. }
  20. snapshot := &m.DashboardSnapshot{
  21. Key: cmd.Key,
  22. DeleteKey: cmd.DeleteKey,
  23. OrgId: cmd.OrgId,
  24. UserId: cmd.UserId,
  25. External: cmd.External,
  26. Dashboard: cmd.Dashboard,
  27. Expires: expires,
  28. Created: time.Now(),
  29. Updated: time.Now(),
  30. }
  31. _, err := sess.Insert(snapshot)
  32. cmd.Result = snapshot
  33. return err
  34. })
  35. }
  36. func DeleteDashboardSnapshot(cmd *m.DeleteDashboardSnapshotCommand) error {
  37. return inTransaction(func(sess *xorm.Session) error {
  38. var rawSql = "DELETE FROM dashboard_snapshot WHERE delete_key=?"
  39. _, err := sess.Exec(rawSql, cmd.DeleteKey)
  40. return err
  41. })
  42. }
  43. func GetDashboardSnapshot(query *m.GetDashboardSnapshotQuery) error {
  44. snapshot := m.DashboardSnapshot{Key: query.Key}
  45. has, err := x.Get(&snapshot)
  46. if err != nil {
  47. return err
  48. } else if has == false {
  49. return m.ErrDashboardSnapshotNotFound
  50. }
  51. query.Result = &snapshot
  52. return nil
  53. }