|
|
@@ -3,7 +3,6 @@ package sqlstore
|
|
|
import (
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
|
- "time"
|
|
|
)
|
|
|
|
|
|
func init() {
|
|
|
@@ -13,19 +12,15 @@ func init() {
|
|
|
|
|
|
func GetPreferences(query *m.GetPreferencesQuery) error {
|
|
|
|
|
|
- sql := `SELECT * FROM preferences WHERE user_id = ? ` +
|
|
|
- `AND org_id = ?`
|
|
|
+ var prefs m.Preferences
|
|
|
+ exists, err := x.Where("org_id=? AND user_id=?", query.OrgId, query.UserId).Get(&prefs)
|
|
|
|
|
|
- var prefResults = make([]m.Preferences, 0)
|
|
|
-
|
|
|
- resultsErr := x.Sql(sql, query.UserId, query.OrgId).Find(&prefResults)
|
|
|
-
|
|
|
- if resultsErr != nil {
|
|
|
- return resultsErr
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
- if len(prefResults) > 0 {
|
|
|
- query.Result = &prefResults[0]
|
|
|
+ if exists {
|
|
|
+ query.Result = &prefs
|
|
|
} else {
|
|
|
query.Result = new(m.Preferences)
|
|
|
}
|
|
|
@@ -36,51 +31,25 @@ func GetPreferences(query *m.GetPreferencesQuery) error {
|
|
|
func SavePreferences(cmd *m.SavePreferencesCommand) error {
|
|
|
return inTransaction2(func(sess *session) error {
|
|
|
|
|
|
- sql := `SELECT * FROM preferences WHERE user_id = ? ` +
|
|
|
- `AND org_id = ?`
|
|
|
-
|
|
|
- var prefResults = make([]m.Preferences, 0)
|
|
|
-
|
|
|
- resultsErr := sess.Sql(sql, cmd.UserId, cmd.OrgId).Find(&prefResults)
|
|
|
-
|
|
|
- if resultsErr != nil {
|
|
|
- return resultsErr
|
|
|
- }
|
|
|
-
|
|
|
- var savePref m.Preferences
|
|
|
- var affectedRows int64
|
|
|
- var saveErr error
|
|
|
-
|
|
|
- if len(prefResults) == 0 {
|
|
|
- savePref.UserId = cmd.UserId
|
|
|
- savePref.OrgId = cmd.OrgId
|
|
|
- savePref.Preference = cmd.Preference
|
|
|
- savePref = SetPreferencesModel(savePref, false)
|
|
|
- affectedRows, saveErr = sess.Insert(&savePref)
|
|
|
+ var prefs m.Preferences
|
|
|
+ exists, err := sess.Where("org_id=? AND user_id=?", cmd.OrgId, cmd.UserId).Get(&prefs)
|
|
|
+
|
|
|
+ if !exists {
|
|
|
+ prefs = m.Preferences{
|
|
|
+ UserId: cmd.UserId,
|
|
|
+ OrgId: cmd.OrgId,
|
|
|
+ HomeDashboardId: cmd.HomeDashboardId,
|
|
|
+ Timezone: cmd.Timezone,
|
|
|
+ Theme: cmd.Theme,
|
|
|
+ }
|
|
|
+ _, err = sess.Insert(&prefs)
|
|
|
+ return err
|
|
|
} else {
|
|
|
- savePref = prefResults[0]
|
|
|
- savePref.Preference = cmd.Preference
|
|
|
- savePref = SetPreferencesModel(savePref, true)
|
|
|
- affectedRows, saveErr = sess.Id(savePref.Id).Update(&savePref)
|
|
|
+ prefs.HomeDashboardId = cmd.HomeDashboardId
|
|
|
+ prefs.Timezone = cmd.Timezone
|
|
|
+ prefs.Theme = cmd.Theme
|
|
|
+ _, err = sess.Id(prefs.Id).Update(&prefs)
|
|
|
+ return err
|
|
|
}
|
|
|
-
|
|
|
- if affectedRows == 0 {
|
|
|
- return m.ErrPreferencesNotFound
|
|
|
- }
|
|
|
-
|
|
|
- return saveErr
|
|
|
})
|
|
|
}
|
|
|
-
|
|
|
-func SetPreferencesModel(pref m.Preferences, updating bool) m.Preferences {
|
|
|
-
|
|
|
- if updating {
|
|
|
- pref.Version = pref.Version + 1
|
|
|
- } else {
|
|
|
- pref.Version = 0
|
|
|
- pref.Created = time.Now()
|
|
|
- }
|
|
|
- pref.Updated = time.Now()
|
|
|
-
|
|
|
- return pref
|
|
|
-}
|