dashboard_provisioning.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package sqlstore
  2. import (
  3. "time"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/models"
  6. )
  7. func init() {
  8. bus.AddHandler("sql", GetProvisionedDashboardDataQuery)
  9. bus.AddHandler("sql", SaveProvisionedDashboard)
  10. }
  11. type DashboardExtras struct {
  12. Id int64
  13. DashboardId int64
  14. Key string
  15. Value string
  16. }
  17. func SaveProvisionedDashboard(cmd *models.SaveProvisionedDashboardCommand) error {
  18. return inTransaction(func(sess *DBSession) error {
  19. err := saveDashboard(sess, cmd.DashboardCmd)
  20. if err != nil {
  21. return err
  22. }
  23. cmd.Result = cmd.DashboardCmd.Result
  24. return saveProvionedData(sess, cmd.DashboardProvisioning, cmd.Result)
  25. })
  26. }
  27. func saveProvionedData(sess *DBSession, cmd *models.DashboardProvisioning, dashboard *models.Dashboard) error {
  28. result := &models.DashboardProvisioning{}
  29. exist, err := sess.Where("dashboard_id=?", dashboard.Id).Get(result)
  30. if err != nil {
  31. return err
  32. }
  33. cmd.Id = result.Id
  34. cmd.Updated = time.Now()
  35. cmd.DashboardId = dashboard.Id
  36. if exist {
  37. _, err = sess.ID(result.Id).Update(cmd)
  38. } else {
  39. _, err = sess.Insert(cmd)
  40. }
  41. return err
  42. }
  43. func GetProvisionedDashboardDataQuery(cmd *models.GetProvisionedDashboardDataQuery) error {
  44. var result []*models.DashboardProvisioning
  45. if err := x.Where("name = ?", cmd.Name).Find(&result); err != nil {
  46. return err
  47. }
  48. cmd.Result = result
  49. return nil
  50. }