diff --git a/pkg/api/dtos/prefs.go b/pkg/api/dtos/prefs.go index 96a83a94dcb..e8f929e6da4 100644 --- a/pkg/api/dtos/prefs.go +++ b/pkg/api/dtos/prefs.go @@ -3,11 +3,12 @@ package dtos import "github.com/grafana/grafana/pkg/models" type Prefs struct { - Theme string `json:"theme"` - HomeDashboardID int64 `json:"homeDashboardId"` - Timezone string `json:"timezone"` - WeekStart string `json:"weekStart"` - Navbar models.NavbarPreference `json:"navbar,omitempty"` + Theme string `json:"theme"` + HomeDashboardID int64 `json:"homeDashboardId"` + Timezone string `json:"timezone"` + WeekStart string `json:"weekStart"` + Navbar models.NavbarPreference `json:"navbar,omitempty"` + QueryHistory models.QueryHistoryPreference `json:"queryHistory,omitempty"` } // swagger:model @@ -18,9 +19,10 @@ type UpdatePrefsCmd struct { // Default:0 HomeDashboardID int64 `json:"homeDashboardId"` // Enum: utc,browser - Timezone string `json:"timezone"` - WeekStart string `json:"weekStart"` - Navbar *models.NavbarPreference `json:"navbar,omitempty"` + Timezone string `json:"timezone"` + WeekStart string `json:"weekStart"` + Navbar *models.NavbarPreference `json:"navbar,omitempty"` + QueryHistory *models.QueryHistoryPreference `json:"queryHistory,omitempty"` } // swagger:model @@ -31,7 +33,8 @@ type PatchPrefsCmd struct { // Default:0 HomeDashboardID *int64 `json:"homeDashboardId,omitempty"` // Enum: utc,browser - Timezone *string `json:"timezone,omitempty"` - WeekStart *string `json:"weekStart,omitempty"` - Navbar *models.NavbarPreference `json:"navbar,omitempty"` + Timezone *string `json:"timezone,omitempty"` + WeekStart *string `json:"weekStart,omitempty"` + Navbar *models.NavbarPreference `json:"navbar,omitempty"` + QueryHistory *models.QueryHistoryPreference `json:"queryHistory,omitempty"` } diff --git a/pkg/api/preferences.go b/pkg/api/preferences.go index 7d6de66a44f..c15530d8475 100644 --- a/pkg/api/preferences.go +++ b/pkg/api/preferences.go @@ -53,6 +53,7 @@ func (hs *HTTPServer) getPreferencesFor(ctx context.Context, orgID, userID, team if prefsQuery.Result.JsonData != nil { dto.Navbar = prefsQuery.Result.JsonData.Navbar + dto.QueryHistory = prefsQuery.Result.JsonData.QueryHistory } return response.JSON(200, &dto) @@ -110,6 +111,7 @@ func (hs *HTTPServer) patchPreferencesFor(ctx context.Context, orgID, userID, te WeekStart: dtoCmd.WeekStart, HomeDashboardId: dtoCmd.HomeDashboardID, Navbar: dtoCmd.Navbar, + QueryHistory: dtoCmd.QueryHistory, } if err := hs.SQLStore.PatchPreferences(ctx, &patchCmd); err != nil { diff --git a/pkg/models/preferences.go b/pkg/models/preferences.go index 1fbfb3f0992..f5a20048c27 100644 --- a/pkg/models/preferences.go +++ b/pkg/models/preferences.go @@ -49,8 +49,13 @@ type NavbarPreference struct { SavedItems []NavLink `json:"savedItems"` } +type QueryHistoryPreference struct { + HomeTab string `json:"homeTab"` +} + type PreferencesJsonData struct { - Navbar NavbarPreference `json:"navbar"` + Navbar NavbarPreference `json:"navbar"` + QueryHistory QueryHistoryPreference `json:"queryHistory"` } // --------------------- @@ -78,11 +83,12 @@ type SavePreferencesCommand struct { OrgId int64 TeamId int64 - HomeDashboardId int64 `json:"homeDashboardId,omitempty"` - Timezone string `json:"timezone,omitempty"` - WeekStart string `json:"weekStart,omitempty"` - Theme string `json:"theme,omitempty"` - Navbar *NavbarPreference `json:"navbar,omitempty"` + HomeDashboardId int64 `json:"homeDashboardId,omitempty"` + Timezone string `json:"timezone,omitempty"` + WeekStart string `json:"weekStart,omitempty"` + Theme string `json:"theme,omitempty"` + Navbar *NavbarPreference `json:"navbar,omitempty"` + QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"` } type PatchPreferencesCommand struct { @@ -90,9 +96,10 @@ type PatchPreferencesCommand struct { OrgId int64 TeamId int64 - HomeDashboardId *int64 `json:"homeDashboardId,omitempty"` - Timezone *string `json:"timezone,omitempty"` - WeekStart *string `json:"weekStart,omitempty"` - Theme *string `json:"theme,omitempty"` - Navbar *NavbarPreference `json:"navbar,omitempty"` + HomeDashboardId *int64 `json:"homeDashboardId,omitempty"` + Timezone *string `json:"timezone,omitempty"` + WeekStart *string `json:"weekStart,omitempty"` + Theme *string `json:"theme,omitempty"` + Navbar *NavbarPreference `json:"navbar,omitempty"` + QueryHistory *QueryHistoryPreference `json:"queryHistory,omitempty"` } diff --git a/pkg/services/sqlstore/preferences.go b/pkg/services/sqlstore/preferences.go index da3a5388ef1..6d9a7fe84ef 100644 --- a/pkg/services/sqlstore/preferences.go +++ b/pkg/services/sqlstore/preferences.go @@ -109,6 +109,11 @@ func (ss *SQLStore) SavePreferences(ctx context.Context, cmd *models.SavePrefere if cmd.Navbar != nil { prefs.JsonData.Navbar = *cmd.Navbar } + + if cmd.QueryHistory != nil { + prefs.JsonData.QueryHistory = *cmd.QueryHistory + } + _, err = sess.Insert(&prefs) return err } @@ -121,6 +126,16 @@ func (ss *SQLStore) SavePreferences(ctx context.Context, cmd *models.SavePrefere prefs.JsonData.Navbar.SavedItems = cmd.Navbar.SavedItems } } + + if cmd.QueryHistory != nil { + if prefs.JsonData == nil { + prefs.JsonData = &models.PreferencesJsonData{} + } + if cmd.QueryHistory.HomeTab != "" { + prefs.JsonData.QueryHistory.HomeTab = cmd.QueryHistory.HomeTab + } + } + prefs.HomeDashboardId = cmd.HomeDashboardId prefs.Timezone = cmd.Timezone prefs.WeekStart = cmd.WeekStart @@ -159,6 +174,15 @@ func (ss *SQLStore) PatchPreferences(ctx context.Context, cmd *models.PatchPrefe } } + if cmd.QueryHistory != nil { + if prefs.JsonData == nil { + prefs.JsonData = &models.PreferencesJsonData{} + } + if cmd.QueryHistory.HomeTab != "" { + prefs.JsonData.QueryHistory.HomeTab = cmd.QueryHistory.HomeTab + } + } + if cmd.HomeDashboardId != nil { prefs.HomeDashboardId = *cmd.HomeDashboardId }