Chore: Use context.Context for the get home dashboard API endpoint (#36735)
Use context.Context for the get home dashboard API endpoint. Ref #36734
This commit is contained in:
@@ -33,7 +33,6 @@ func init() {
|
||||
bus.AddHandler("sql", SearchDashboards)
|
||||
bus.AddHandler("sql", GetDashboardTags)
|
||||
bus.AddHandler("sql", GetDashboardSlugById)
|
||||
bus.AddHandler("sql", GetDashboardUIDById)
|
||||
bus.AddHandler("sql", GetDashboardsByPluginId)
|
||||
bus.AddHandler("sql", GetDashboardPermissionsForUser)
|
||||
bus.AddHandler("sql", GetDashboardsBySlug)
|
||||
@@ -43,6 +42,10 @@ func init() {
|
||||
prometheus.MustRegister(shadowSearchCounter)
|
||||
}
|
||||
|
||||
func (ss *SQLStore) addDashboardQueryAndCommandHandlers() {
|
||||
bus.AddHandlerCtx("sql", ss.GetDashboardUIDById)
|
||||
}
|
||||
|
||||
var generateNewUid func() string = util.GenerateShortUID
|
||||
|
||||
func (ss *SQLStore) SaveDashboard(cmd models.SaveDashboardCommand) (*models.Dashboard, error) {
|
||||
@@ -623,21 +626,23 @@ func GetDashboardsBySlug(query *models.GetDashboardsBySlugQuery) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetDashboardUIDById(query *models.GetDashboardRefByIdQuery) error {
|
||||
var rawSQL = `SELECT uid, slug from dashboard WHERE Id=?`
|
||||
func (ss *SQLStore) GetDashboardUIDById(ctx context.Context, query *models.GetDashboardRefByIdQuery) error {
|
||||
return ss.WithDbSession(ctx, func(dbSession *DBSession) error {
|
||||
var rawSQL = `SELECT uid, slug from dashboard WHERE Id=?`
|
||||
|
||||
us := &models.DashboardRef{}
|
||||
us := &models.DashboardRef{}
|
||||
|
||||
exists, err := x.SQL(rawSQL, query.Id).Get(us)
|
||||
exists, err := dbSession.SQL(rawSQL, query.Id).Get(us)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !exists {
|
||||
return models.ErrDashboardNotFound
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !exists {
|
||||
return models.ErrDashboardNotFound
|
||||
}
|
||||
|
||||
query.Result = us
|
||||
return nil
|
||||
query.Result = us
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func getExistingDashboardByIdOrUidForUpdate(sess *DBSession, dash *models.Dashboard, overwrite bool) (bool, error) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package sqlstore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -10,55 +11,57 @@ import (
|
||||
|
||||
func (ss *SQLStore) addPreferencesQueryAndCommandHandlers() {
|
||||
bus.AddHandler("sql", GetPreferences)
|
||||
bus.AddHandler("sql", ss.GetPreferencesWithDefaults)
|
||||
bus.AddHandlerCtx("sql", ss.GetPreferencesWithDefaults)
|
||||
bus.AddHandler("sql", SavePreferences)
|
||||
}
|
||||
|
||||
func (ss *SQLStore) GetPreferencesWithDefaults(query *models.GetPreferencesWithDefaultsQuery) error {
|
||||
params := make([]interface{}, 0)
|
||||
filter := ""
|
||||
func (ss *SQLStore) GetPreferencesWithDefaults(ctx context.Context, query *models.GetPreferencesWithDefaultsQuery) error {
|
||||
return ss.WithDbSession(ctx, func(dbSession *DBSession) error {
|
||||
params := make([]interface{}, 0)
|
||||
filter := ""
|
||||
|
||||
if len(query.User.Teams) > 0 {
|
||||
filter = "(org_id=? AND team_id IN (?" + strings.Repeat(",?", len(query.User.Teams)-1) + ")) OR "
|
||||
if len(query.User.Teams) > 0 {
|
||||
filter = "(org_id=? AND team_id IN (?" + strings.Repeat(",?", len(query.User.Teams)-1) + ")) OR "
|
||||
params = append(params, query.User.OrgId)
|
||||
for _, v := range query.User.Teams {
|
||||
params = append(params, v)
|
||||
}
|
||||
}
|
||||
|
||||
filter += "(org_id=? AND user_id=? AND team_id=0) OR (org_id=? AND team_id=0 AND user_id=0)"
|
||||
params = append(params, query.User.OrgId)
|
||||
for _, v := range query.User.Teams {
|
||||
params = append(params, v)
|
||||
params = append(params, query.User.UserId)
|
||||
params = append(params, query.User.OrgId)
|
||||
prefs := make([]*models.Preferences, 0)
|
||||
err := dbSession.Where(filter, params...).
|
||||
OrderBy("user_id ASC, team_id ASC").
|
||||
Find(&prefs)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
filter += "(org_id=? AND user_id=? AND team_id=0) OR (org_id=? AND team_id=0 AND user_id=0)"
|
||||
params = append(params, query.User.OrgId)
|
||||
params = append(params, query.User.UserId)
|
||||
params = append(params, query.User.OrgId)
|
||||
prefs := make([]*models.Preferences, 0)
|
||||
err := x.Where(filter, params...).
|
||||
OrderBy("user_id ASC, team_id ASC").
|
||||
Find(&prefs)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
res := &models.Preferences{
|
||||
Theme: ss.Cfg.DefaultTheme,
|
||||
Timezone: ss.Cfg.DateFormats.DefaultTimezone,
|
||||
HomeDashboardId: 0,
|
||||
}
|
||||
|
||||
for _, p := range prefs {
|
||||
if p.Theme != "" {
|
||||
res.Theme = p.Theme
|
||||
res := &models.Preferences{
|
||||
Theme: ss.Cfg.DefaultTheme,
|
||||
Timezone: ss.Cfg.DateFormats.DefaultTimezone,
|
||||
HomeDashboardId: 0,
|
||||
}
|
||||
if p.Timezone != "" {
|
||||
res.Timezone = p.Timezone
|
||||
}
|
||||
if p.HomeDashboardId != 0 {
|
||||
res.HomeDashboardId = p.HomeDashboardId
|
||||
}
|
||||
}
|
||||
|
||||
query.Result = res
|
||||
return nil
|
||||
for _, p := range prefs {
|
||||
if p.Theme != "" {
|
||||
res.Theme = p.Theme
|
||||
}
|
||||
if p.Timezone != "" {
|
||||
res.Timezone = p.Timezone
|
||||
}
|
||||
if p.HomeDashboardId != 0 {
|
||||
res.HomeDashboardId = p.HomeDashboardId
|
||||
}
|
||||
}
|
||||
|
||||
query.Result = res
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func GetPreferences(query *models.GetPreferencesQuery) error {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
package sqlstore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
@@ -17,7 +18,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
ss.Cfg.DateFormats.DefaultTimezone = "UTC"
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{}}
|
||||
err := ss.GetPreferencesWithDefaults(query)
|
||||
err := ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "light", query.Result.Theme)
|
||||
require.Equal(t, "UTC", query.Result.Timezone)
|
||||
@@ -31,7 +32,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{OrgId: 1, UserId: 1}}
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(4), query.Result.HomeDashboardId)
|
||||
})
|
||||
@@ -43,7 +44,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{OrgId: 1, UserId: 2}}
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(1), query.Result.HomeDashboardId)
|
||||
})
|
||||
@@ -59,7 +60,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
query := &models.GetPreferencesWithDefaultsQuery{
|
||||
User: &models.SignedInUser{OrgId: 1, Teams: []int64{2, 3}},
|
||||
}
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(3), query.Result.HomeDashboardId)
|
||||
})
|
||||
@@ -73,7 +74,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{OrgId: 1}}
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(1), query.Result.HomeDashboardId)
|
||||
})
|
||||
@@ -91,7 +92,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
query := &models.GetPreferencesWithDefaultsQuery{
|
||||
User: &models.SignedInUser{OrgId: 1, UserId: 1, Teams: []int64{2, 3}},
|
||||
}
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(4), query.Result.HomeDashboardId)
|
||||
})
|
||||
@@ -109,7 +110,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
query := &models.GetPreferencesWithDefaultsQuery{
|
||||
User: &models.SignedInUser{OrgId: 1, UserId: 2},
|
||||
}
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(context.Background(), query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, int64(1), query.Result.HomeDashboardId)
|
||||
})
|
||||
|
||||
@@ -109,6 +109,7 @@ func (ss *SQLStore) Init() error {
|
||||
ss.addUserQueryAndCommandHandlers()
|
||||
ss.addAlertNotificationUidByIdHandler()
|
||||
ss.addPreferencesQueryAndCommandHandlers()
|
||||
ss.addDashboardQueryAndCommandHandlers()
|
||||
|
||||
if err := ss.Reset(); err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user