dashboard_snapshot.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. Name: cmd.Name,
  22. Key: cmd.Key,
  23. DeleteKey: cmd.DeleteKey,
  24. OrgId: cmd.OrgId,
  25. UserId: cmd.UserId,
  26. External: cmd.External,
  27. Dashboard: cmd.Dashboard,
  28. Expires: expires,
  29. Created: time.Now(),
  30. Updated: time.Now(),
  31. }
  32. _, err := sess.Insert(snapshot)
  33. cmd.Result = snapshot
  34. return err
  35. })
  36. }
  37. func DeleteDashboardSnapshot(cmd *m.DeleteDashboardSnapshotCommand) error {
  38. return inTransaction(func(sess *xorm.Session) error {
  39. var rawSql = "DELETE FROM dashboard_snapshot WHERE delete_key=?"
  40. _, err := sess.Exec(rawSql, cmd.DeleteKey)
  41. return err
  42. })
  43. }
  44. func GetDashboardSnapshot(query *m.GetDashboardSnapshotQuery) error {
  45. snapshot := m.DashboardSnapshot{Key: query.Key}
  46. has, err := x.Get(&snapshot)
  47. if err != nil {
  48. return err
  49. } else if has == false {
  50. return m.ErrDashboardSnapshotNotFound
  51. }
  52. query.Result = &snapshot
  53. return nil
  54. }