dashboard_provisioning.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. bus.AddHandler("sql", GetProvisionedDataByDashboardId)
  10. }
  11. type DashboardExtras struct {
  12. Id int64
  13. DashboardId int64
  14. Key string
  15. Value string
  16. }
  17. func GetProvisionedDataByDashboardId(cmd *models.IsDashboardProvisionedQuery) error {
  18. result := &models.DashboardProvisioning{}
  19. exist, err := x.Where("dashboard_id = ?", cmd.DashboardId).Get(result)
  20. if err != nil {
  21. return err
  22. }
  23. cmd.Result = exist
  24. return nil
  25. }
  26. func SaveProvisionedDashboard(cmd *models.SaveProvisionedDashboardCommand) error {
  27. return inTransaction(func(sess *DBSession) error {
  28. err := saveDashboard(sess, cmd.DashboardCmd)
  29. if err != nil {
  30. return err
  31. }
  32. cmd.Result = cmd.DashboardCmd.Result
  33. if cmd.DashboardProvisioning.Updated == 0 {
  34. cmd.DashboardProvisioning.Updated = cmd.Result.Updated.Unix()
  35. }
  36. return saveProvionedData(sess, cmd.DashboardProvisioning, cmd.Result)
  37. })
  38. }
  39. func saveProvionedData(sess *DBSession, cmd *models.DashboardProvisioning, dashboard *models.Dashboard) error {
  40. result := &models.DashboardProvisioning{}
  41. exist, err := sess.Where("dashboard_id=?", dashboard.Id).Get(result)
  42. if err != nil {
  43. return err
  44. }
  45. cmd.Id = result.Id
  46. cmd.DashboardId = dashboard.Id
  47. if exist {
  48. _, err = sess.ID(result.Id).Update(cmd)
  49. } else {
  50. _, err = sess.Insert(cmd)
  51. }
  52. return err
  53. }
  54. func GetProvisionedDashboardDataQuery(cmd *models.GetProvisionedDashboardDataQuery) error {
  55. var result []*models.DashboardProvisioning
  56. if err := x.Where("name = ?", cmd.Name).Find(&result); err != nil {
  57. return err
  58. }
  59. cmd.Result = result
  60. return nil
  61. }