dashboard_provisioning.go 1.4 KB

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