|
|
@@ -0,0 +1,70 @@
|
|
|
+package sqlstore
|
|
|
+
|
|
|
+import (
|
|
|
+ "github.com/grafana/grafana/pkg/bus"
|
|
|
+ m "github.com/grafana/grafana/pkg/models"
|
|
|
+)
|
|
|
+
|
|
|
+func init() {
|
|
|
+ bus.AddHandler("sql", GetPreferences)
|
|
|
+ bus.AddHandler("sql", SavePreferences)
|
|
|
+}
|
|
|
+
|
|
|
+func GetPreferences(query *m.GetPreferencesQuery) error {
|
|
|
+
|
|
|
+ sql := `SELECT * FROM preferences WHERE pref_id = ? ` +
|
|
|
+ `AND pref_type = ?`
|
|
|
+
|
|
|
+ var prefResults = make([]m.Preferences, 0)
|
|
|
+
|
|
|
+ resultsErr := x.Sql(sql, query.PrefId, query.PrefType).Find(&prefResults)
|
|
|
+
|
|
|
+ if resultsErr != nil {
|
|
|
+ return resultsErr
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(prefResults) > 0 {
|
|
|
+ query.Result = &prefResults[0]
|
|
|
+ } else {
|
|
|
+ query.Result = new(m.Preferences)
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func SavePreferences(cmd *m.SavePreferencesCommand) error {
|
|
|
+ return inTransaction2(func(sess *session) error {
|
|
|
+
|
|
|
+ sql := `SELECT * FROM preferences WHERE pref_id = ? ` +
|
|
|
+ `AND pref_type = ?`
|
|
|
+
|
|
|
+ var prefResults = make([]m.Preferences, 0)
|
|
|
+
|
|
|
+ resultsErr := sess.Sql(sql, cmd.PrefId, cmd.PrefType).Find(&prefResults)
|
|
|
+
|
|
|
+ if resultsErr != nil {
|
|
|
+ return resultsErr
|
|
|
+ }
|
|
|
+
|
|
|
+ var savePref m.Preferences
|
|
|
+ var affectedRows int64
|
|
|
+ var saveErr error
|
|
|
+
|
|
|
+ if len(prefResults) == 0 {
|
|
|
+ savePref.PrefId = cmd.PrefId
|
|
|
+ savePref.PrefType = cmd.PrefType
|
|
|
+ savePref.PrefData = cmd.PrefData
|
|
|
+ affectedRows, saveErr = sess.Insert(&savePref)
|
|
|
+ } else {
|
|
|
+ savePref = prefResults[0]
|
|
|
+ savePref.PrefData = cmd.PrefData
|
|
|
+ affectedRows, saveErr = sess.Id(savePref.Id).Update(&savePref)
|
|
|
+ }
|
|
|
+
|
|
|
+ if affectedRows == 0 {
|
|
|
+ return m.ErrPreferencesNotFound
|
|
|
+ }
|
|
|
+
|
|
|
+ return saveErr
|
|
|
+ })
|
|
|
+}
|