plugin_setting.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package sqlstore
  2. import (
  3. "time"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/setting"
  7. "github.com/grafana/grafana/pkg/util"
  8. )
  9. func init() {
  10. bus.AddHandler("sql", GetPluginSettings)
  11. bus.AddHandler("sql", GetPluginSettingById)
  12. bus.AddHandler("sql", UpdatePluginSetting)
  13. }
  14. func GetPluginSettings(query *m.GetPluginSettingsQuery) error {
  15. sql := `SELECT org_id, plugin_id, enabled, pinned
  16. FROM plugin_setting
  17. WHERE org_id=?`
  18. sess := x.Sql(sql, query.OrgId)
  19. query.Result = make([]*m.PluginSettingInfoDTO, 0)
  20. return sess.Find(&query.Result)
  21. }
  22. func GetPluginSettingById(query *m.GetPluginSettingByIdQuery) error {
  23. pluginSetting := m.PluginSetting{OrgId: query.OrgId, PluginId: query.PluginId}
  24. has, err := x.Get(&pluginSetting)
  25. if err != nil {
  26. return err
  27. } else if has == false {
  28. return m.ErrPluginSettingNotFound
  29. }
  30. query.Result = &pluginSetting
  31. return nil
  32. }
  33. func UpdatePluginSetting(cmd *m.UpdatePluginSettingCmd) error {
  34. return inTransaction2(func(sess *session) error {
  35. var pluginSetting m.PluginSetting
  36. exists, err := sess.Where("org_id=? and plugin_id=?", cmd.OrgId, cmd.PluginId).Get(&pluginSetting)
  37. sess.UseBool("enabled")
  38. sess.UseBool("pinned")
  39. if !exists {
  40. pluginSetting = m.PluginSetting{
  41. PluginId: cmd.PluginId,
  42. OrgId: cmd.OrgId,
  43. Enabled: cmd.Enabled,
  44. Pinned: cmd.Pinned,
  45. JsonData: cmd.JsonData,
  46. SecureJsonData: cmd.GetEncryptedJsonData(),
  47. Created: time.Now(),
  48. Updated: time.Now(),
  49. }
  50. _, err = sess.Insert(&pluginSetting)
  51. return err
  52. } else {
  53. for key, data := range cmd.SecureJsonData {
  54. pluginSetting.SecureJsonData[key] = util.Encrypt([]byte(data), setting.SecretKey)
  55. }
  56. pluginSetting.SecureJsonData = cmd.GetEncryptedJsonData()
  57. pluginSetting.Updated = time.Now()
  58. pluginSetting.Enabled = cmd.Enabled
  59. pluginSetting.JsonData = cmd.JsonData
  60. pluginSetting.Pinned = cmd.Pinned
  61. _, err = sess.Id(pluginSetting.Id).Update(&pluginSetting)
  62. return err
  63. }
  64. })
  65. }