The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/pkg/services/sqlstore/preferences.go

70 lines
1.5 KiB

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 user_id = ? ` +
`AND org_id = ?`
var prefResults = make([]m.Preferences, 0)
resultsErr := x.Sql(sql, query.UserId, query.OrgId).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 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
affectedRows, saveErr = sess.Insert(&savePref)
} else {
savePref = prefResults[0]
savePref.Preference = cmd.Preference
affectedRows, saveErr = sess.Id(savePref.Id).Update(&savePref)
}
if affectedRows == 0 {
return m.ErrPreferencesNotFound
}
return saveErr
})
}