preferences.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package sqlstore
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. "time"
  6. )
  7. func init() {
  8. bus.AddHandler("sql", GetPreferences)
  9. bus.AddHandler("sql", SavePreferences)
  10. }
  11. func GetPreferences(query *m.GetPreferencesQuery) error {
  12. var prefs m.Preferences
  13. exists, err := x.Where("org_id=? AND user_id=?", query.OrgId, query.UserId).Get(&prefs)
  14. if err != nil {
  15. return err
  16. }
  17. if exists {
  18. query.Result = &prefs
  19. } else {
  20. query.Result = new(m.Preferences)
  21. }
  22. return nil
  23. }
  24. func SavePreferences(cmd *m.SavePreferencesCommand) error {
  25. return inTransaction2(func(sess *session) error {
  26. var prefs m.Preferences
  27. exists, err := sess.Where("org_id=? AND user_id=?", cmd.OrgId, cmd.UserId).Get(&prefs)
  28. if !exists {
  29. prefs = m.Preferences{
  30. UserId: cmd.UserId,
  31. OrgId: cmd.OrgId,
  32. HomeDashboardId: cmd.HomeDashboardId,
  33. Timezone: cmd.Timezone,
  34. Theme: cmd.Theme,
  35. Created: time.Now(),
  36. Updated: time.Now(),
  37. }
  38. _, err = sess.Insert(&prefs)
  39. return err
  40. } else {
  41. prefs.HomeDashboardId = cmd.HomeDashboardId
  42. prefs.Timezone = cmd.Timezone
  43. prefs.Theme = cmd.Theme
  44. prefs.Updated = time.Now()
  45. prefs.Version += 1
  46. _, err = sess.Id(prefs.Id).Update(&prefs)
  47. return err
  48. }
  49. })
  50. }