Chore: Fix SQLx failure when starting the server with newDBLibrary enabled (#58985)

change the weekstart to pointer

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
pull/58915/head^2
ying-jeanne 3 years ago committed by GitHub
parent 156ed4b56c
commit ba8124ef93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      pkg/api/index.go
  2. 7
      pkg/api/preferences.go
  3. 2
      pkg/services/preference/model.go
  4. 10
      pkg/services/preference/prefimpl/pref.go
  5. 39
      pkg/services/preference/prefimpl/pref_test.go
  6. 8
      pkg/services/preference/prefimpl/store_test.go

@ -77,6 +77,11 @@ func (hs *HTTPServer) setIndexViewData(c *models.ReqContext) (*dtos.IndexViewDat
settings["isPublicDashboardView"] = true
}
weekStart := ""
if prefs.WeekStart != nil {
weekStart = *prefs.WeekStart
}
data := dtos.IndexViewData{
User: &dtos.CurrentUser{
Id: c.UserID,
@ -93,7 +98,7 @@ func (hs *HTTPServer) setIndexViewData(c *models.ReqContext) (*dtos.IndexViewDat
IsGrafanaAdmin: c.IsGrafanaAdmin,
LightTheme: prefs.Theme == lightName,
Timezone: prefs.Timezone,
WeekStart: prefs.WeekStart,
WeekStart: weekStart,
Locale: locale,
HelpFlags1: c.HelpFlags1,
HasEditPermissionInFolders: hasEditPerm,

@ -82,12 +82,17 @@ func (hs *HTTPServer) getPreferencesFor(ctx context.Context, orgID, userID, team
}
}
weekStart := ""
if preference.WeekStart != nil {
weekStart = *preference.WeekStart
}
dto := dtos.Prefs{
Theme: preference.Theme,
HomeDashboardID: preference.HomeDashboardID,
HomeDashboardUID: dashboardUID,
Timezone: preference.Timezone,
WeekStart: preference.WeekStart,
WeekStart: weekStart,
}
if preference.JSONData != nil {

@ -20,7 +20,7 @@ type Preference struct {
Version int `db:"version"`
HomeDashboardID int64 `xorm:"home_dashboard_id" db:"home_dashboard_id"`
Timezone string `db:"timezone"`
WeekStart string `db:"week_start"`
WeekStart *string `db:"week_start"`
Theme string `db:"theme"`
Created time.Time `db:"created"`
Updated time.Time `db:"updated"`

@ -54,7 +54,7 @@ func (s *Service) GetWithDefaults(ctx context.Context, query *pref.GetPreference
if p.Timezone != "" {
res.Timezone = p.Timezone
}
if p.WeekStart != "" {
if p.WeekStart != nil && *p.WeekStart != "" {
res.WeekStart = p.WeekStart
}
if p.HomeDashboardID != 0 {
@ -108,7 +108,7 @@ func (s *Service) Save(ctx context.Context, cmd *pref.SavePreferenceCommand) err
TeamID: cmd.TeamID,
HomeDashboardID: cmd.HomeDashboardID,
Timezone: cmd.Timezone,
WeekStart: cmd.WeekStart,
WeekStart: &cmd.WeekStart,
Theme: cmd.Theme,
Created: time.Now(),
Updated: time.Now(),
@ -125,7 +125,7 @@ func (s *Service) Save(ctx context.Context, cmd *pref.SavePreferenceCommand) err
}
preference.Timezone = cmd.Timezone
preference.WeekStart = cmd.WeekStart
preference.WeekStart = &cmd.WeekStart
preference.Theme = cmd.Theme
preference.Updated = time.Now()
preference.Version += 1
@ -200,7 +200,7 @@ func (s *Service) Patch(ctx context.Context, cmd *pref.PatchPreferenceCommand) e
}
if cmd.WeekStart != nil {
preference.WeekStart = *cmd.WeekStart
preference.WeekStart = cmd.WeekStart
}
if cmd.Theme != nil {
@ -232,7 +232,7 @@ func (s *Service) GetDefaults() *pref.Preference {
defaults := &pref.Preference{
Theme: s.cfg.DefaultTheme,
Timezone: s.cfg.DateFormats.DefaultTimezone,
WeekStart: s.cfg.DateFormats.DefaultWeekStart,
WeekStart: &s.cfg.DateFormats.DefaultWeekStart,
HomeDashboardID: 0,
JSONData: &pref.PreferenceJSONData{},
}

@ -36,10 +36,12 @@ func TestGetDefaults(t *testing.T) {
prefService.cfg.DefaultLocale = "en-US"
prefService.cfg.DefaultTheme = "light"
prefService.cfg.DateFormats.DefaultTimezone = "UTC"
weekStart := ""
t.Run("GetDefaults", func(t *testing.T) {
preference := prefService.GetDefaults()
expected := &pref.Preference{
WeekStart: &weekStart,
Theme: "light",
Timezone: "UTC",
HomeDashboardID: 0,
@ -55,6 +57,7 @@ func TestGetDefaults(t *testing.T) {
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
expected := &pref.Preference{
WeekStart: &weekStart,
Theme: "light",
Timezone: "UTC",
HomeDashboardID: 0,
@ -72,6 +75,7 @@ func TestGetDefaultsWithI18nFeatureFlag(t *testing.T) {
cfg: setting.NewCfg(),
features: featuremgmt.WithFeatures(featuremgmt.FlagInternationalization),
}
weekStart := ""
prefService.cfg.DefaultLocale = "en-US"
prefService.cfg.DefaultTheme = "light"
prefService.cfg.DateFormats.DefaultTimezone = "UTC"
@ -79,6 +83,7 @@ func TestGetDefaultsWithI18nFeatureFlag(t *testing.T) {
t.Run("GetDefaults", func(t *testing.T) {
preference := prefService.GetDefaults()
expected := &pref.Preference{
WeekStart: &weekStart,
Theme: "light",
Timezone: "UTC",
HomeDashboardID: 0,
@ -100,13 +105,15 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
}
prefService.cfg.DefaultLocale = "en-US"
weekStartOne := "1"
weekStartTwo := "2"
insertPrefs(t, prefService.store,
pref.Preference{
OrgID: 1,
HomeDashboardID: 1,
Theme: "dark",
Timezone: "UTC",
WeekStart: "1",
WeekStart: &weekStartOne,
JSONData: &pref.PreferenceJSONData{
Locale: "en-GB",
},
@ -117,7 +124,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
HomeDashboardID: 4,
Theme: "light",
Timezone: "browser",
WeekStart: "2",
WeekStart: &weekStartTwo,
JSONData: &pref.PreferenceJSONData{
Locale: "en-AU",
},
@ -131,7 +138,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
expected := &pref.Preference{
Theme: "light",
Timezone: "browser",
WeekStart: "2",
WeekStart: &weekStartTwo,
HomeDashboardID: 4,
JSONData: &pref.PreferenceJSONData{
Locale: "en-AU",
@ -150,7 +157,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
expected := &pref.Preference{
Theme: "dark",
Timezone: "UTC",
WeekStart: "1",
WeekStart: &weekStartOne,
HomeDashboardID: 1,
JSONData: &pref.PreferenceJSONData{
Locale: "en-GB",
@ -163,6 +170,7 @@ func TestGetWithDefaults_withUserAndOrgPrefs(t *testing.T) {
}
func TestGetDefaults_JSONData(t *testing.T) {
weekStart := ""
queryPreference := pref.QueryHistoryPreference{
HomeTab: "hometab",
}
@ -235,7 +243,8 @@ func TestGetDefaults_JSONData(t *testing.T) {
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
require.Equal(t, &pref.Preference{
JSONData: &userPreferencesJsonData,
WeekStart: &weekStart,
JSONData: &userPreferencesJsonData,
}, preference)
})
@ -262,6 +271,7 @@ func TestGetDefaults_JSONData(t *testing.T) {
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
require.Equal(t, &pref.Preference{
WeekStart: &weekStart,
JSONData: &pref.PreferenceJSONData{
Locale: "en-GB",
Navbar: userNavbarPreferences,
@ -300,12 +310,15 @@ func TestGetDefaults_JSONData(t *testing.T) {
preference, err := prefService.GetWithDefaults(context.Background(), query)
require.NoError(t, err)
require.Equal(t, &pref.Preference{
JSONData: &team2PreferencesJsonData,
JSONData: &team2PreferencesJsonData,
WeekStart: &weekStart,
}, preference)
})
}
func TestGetWithDefaults_teams(t *testing.T) {
weekStartOne := "1"
weekStartTwo := "2"
prefService := &Service{
store: newFake(),
cfg: setting.NewCfg(),
@ -317,7 +330,7 @@ func TestGetWithDefaults_teams(t *testing.T) {
HomeDashboardID: 1,
Theme: "light",
Timezone: "browser",
WeekStart: "1",
WeekStart: &weekStartOne,
},
pref.Preference{
OrgID: 1,
@ -325,7 +338,7 @@ func TestGetWithDefaults_teams(t *testing.T) {
HomeDashboardID: 3,
Theme: "light",
Timezone: "browser",
WeekStart: "2",
WeekStart: &weekStartTwo,
},
pref.Preference{
OrgID: 1,
@ -333,7 +346,7 @@ func TestGetWithDefaults_teams(t *testing.T) {
HomeDashboardID: 4,
Theme: "light",
Timezone: "browser",
WeekStart: "2",
WeekStart: &weekStartTwo,
},
)
@ -343,7 +356,7 @@ func TestGetWithDefaults_teams(t *testing.T) {
expected := &pref.Preference{
Theme: "light",
Timezone: "browser",
WeekStart: "2",
WeekStart: &weekStartTwo,
HomeDashboardID: 4,
JSONData: &pref.PreferenceJSONData{},
}
@ -399,7 +412,7 @@ func TestSave(t *testing.T) {
assert.Equal(t, "dark", stored.Theme)
assert.Equal(t, "browser", stored.Timezone)
assert.EqualValues(t, 5, stored.HomeDashboardID)
assert.Equal(t, "1", stored.WeekStart)
assert.Equal(t, "1", *stored.WeekStart)
assert.EqualValues(t, 0, stored.Version)
})
@ -421,7 +434,7 @@ func TestSave(t *testing.T) {
assert.Empty(t, stored.Theme)
assert.Equal(t, "UTC", stored.Timezone)
assert.Zero(t, stored.HomeDashboardID)
assert.Equal(t, "1", stored.WeekStart)
assert.Equal(t, "1", *stored.WeekStart)
assert.EqualValues(t, 1, stored.Version)
})
@ -440,7 +453,7 @@ func TestSave(t *testing.T) {
assert.Equal(t, themeValue, stored.Theme)
assert.Equal(t, "UTC", stored.Timezone)
assert.Zero(t, stored.HomeDashboardID)
assert.Equal(t, "1", stored.WeekStart)
assert.Equal(t, "1", *stored.WeekStart)
assert.EqualValues(t, 2, stored.Version)
})
}

@ -17,7 +17,7 @@ type getStore func(db.DB) store
func testIntegrationPreferencesDataAccess(t *testing.T, fn getStore) {
t.Helper()
weekStartOne := "1"
ss := db.InitTestDB(t)
prefStore := fn(ss)
orgNavbarPreferences := pref.NavbarPreference{
@ -123,7 +123,7 @@ func testIntegrationPreferencesDataAccess(t *testing.T, fn getStore) {
Theme: "dark",
Timezone: "browser",
HomeDashboardID: 5,
WeekStart: "1",
WeekStart: &weekStartOne,
JSONData: &pref.PreferenceJSONData{Navbar: orgNavbarPreferences},
Created: time.Now(),
Updated: time.Now(),
@ -135,7 +135,7 @@ func testIntegrationPreferencesDataAccess(t *testing.T, fn getStore) {
Theme: "dark",
HomeDashboardID: 5,
Timezone: "browser",
WeekStart: "1",
WeekStart: &weekStartOne,
Created: time.Now(),
Updated: time.Now(),
JSONData: &pref.PreferenceJSONData{},
@ -149,7 +149,7 @@ func testIntegrationPreferencesDataAccess(t *testing.T, fn getStore) {
Version: prefs[0].Version,
HomeDashboardID: 5,
Timezone: "browser",
WeekStart: "1",
WeekStart: &weekStartOne,
Theme: "dark",
JSONData: prefs[0].JSONData,
Created: prefs[0].Created,

Loading…
Cancel
Save