preferences.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package sqlstore
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. func init() {
  7. bus.AddHandler("sql", GetPreferences)
  8. bus.AddHandler("sql", SavePreferences)
  9. }
  10. func GetPreferences(query *m.GetPreferencesQuery) error {
  11. sql := `SELECT * FROM preferences WHERE user_id = ? ` +
  12. `AND org_id = ?`
  13. var prefResults = make([]m.Preferences, 0)
  14. resultsErr := x.Sql(sql, query.UserId, query.OrgId).Find(&prefResults)
  15. if resultsErr != nil {
  16. return resultsErr
  17. }
  18. if len(prefResults) > 0 {
  19. query.Result = &prefResults[0]
  20. } else {
  21. query.Result = new(m.Preferences)
  22. }
  23. return nil
  24. }
  25. func SavePreferences(cmd *m.SavePreferencesCommand) error {
  26. return inTransaction2(func(sess *session) error {
  27. sql := `SELECT * FROM preferences WHERE user_id = ? ` +
  28. `AND org_id = ?`
  29. var prefResults = make([]m.Preferences, 0)
  30. resultsErr := sess.Sql(sql, cmd.UserId, cmd.OrgId).Find(&prefResults)
  31. if resultsErr != nil {
  32. return resultsErr
  33. }
  34. var savePref m.Preferences
  35. var affectedRows int64
  36. var saveErr error
  37. if len(prefResults) == 0 {
  38. savePref.UserId = cmd.UserId
  39. savePref.OrgId = cmd.OrgId
  40. savePref.Preference = cmd.Preference
  41. affectedRows, saveErr = sess.Insert(&savePref)
  42. } else {
  43. savePref = prefResults[0]
  44. savePref.Preference = cmd.Preference
  45. affectedRows, saveErr = sess.Id(savePref.Id).Update(&savePref)
  46. }
  47. if affectedRows == 0 {
  48. return m.ErrPreferencesNotFound
  49. }
  50. return saveErr
  51. })
  52. }