diff --git a/app/oauth.go b/app/oauth.go index ab419fcbeb..3c3aa010e5 100644 --- a/app/oauth.go +++ b/app/oauth.go @@ -455,7 +455,7 @@ func (a *App) DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError { } // Deauthorize the app - if err := (<-a.Srv.Store.Preference().Delete(userId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, appId)).Err; err != nil { + if err := a.Srv.Store.Preference().Delete(userId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, appId); err != nil { return err } diff --git a/app/preference.go b/app/preference.go index 47051f6fcc..d964efc17f 100644 --- a/app/preference.go +++ b/app/preference.go @@ -70,9 +70,9 @@ func (a *App) DeletePreferences(userId string, preferences model.Preferences) *m } for _, preference := range preferences { - if result := <-a.Srv.Store.Preference().Delete(userId, preference.Category, preference.Name); result.Err != nil { - result.Err.StatusCode = http.StatusBadRequest - return result.Err + if err := a.Srv.Store.Preference().Delete(userId, preference.Category, preference.Name); err != nil { + err.StatusCode = http.StatusBadRequest + return err } } diff --git a/store/sqlstore/preference_store.go b/store/sqlstore/preference_store.go index 574124739e..182b1a184f 100644 --- a/store/sqlstore/preference_store.go +++ b/store/sqlstore/preference_store.go @@ -236,18 +236,21 @@ func (s SqlPreferenceStore) IsFeatureEnabled(feature, userId string) (bool, *mod return value == "true", nil } -func (s SqlPreferenceStore) Delete(userId, category, name string) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - if _, err := s.GetMaster().Exec( - `DELETE FROM - Preferences - WHERE - UserId = :UserId - AND Category = :Category - AND Name = :Name`, map[string]interface{}{"UserId": userId, "Category": category, "Name": name}); err != nil { - result.Err = model.NewAppError("SqlPreferenceStore.Delete", "store.sql_preference.delete.app_error", nil, err.Error(), http.StatusInternalServerError) - } - }) +func (s SqlPreferenceStore) Delete(userId, category, name string) *model.AppError { + query := + `DELETE FROM Preferences + WHERE + UserId = :UserId + AND Category = :Category + AND Name = :Name` + + _, err := s.GetMaster().Exec(query, map[string]interface{}{"UserId": userId, "Category": category, "Name": name}) + + if err != nil { + return model.NewAppError("SqlPreferenceStore.Delete", "store.sql_preference.delete.app_error", nil, err.Error(), http.StatusInternalServerError) + } + + return nil } func (s SqlPreferenceStore) DeleteCategory(userId string, category string) *model.AppError { diff --git a/store/store.go b/store/store.go index 1f63a9439b..0946c0f6ec 100644 --- a/store/store.go +++ b/store/store.go @@ -432,7 +432,7 @@ type PreferenceStore interface { GetCategory(userId string, category string) (model.Preferences, *model.AppError) Get(userId string, category string, name string) (*model.Preference, *model.AppError) GetAll(userId string) (model.Preferences, *model.AppError) - Delete(userId, category, name string) StoreChannel + Delete(userId, category, name string) *model.AppError DeleteCategory(userId string, category string) *model.AppError DeleteCategoryAndName(category string, name string) *model.AppError PermanentDeleteByUser(userId string) *model.AppError diff --git a/store/storetest/mocks/PreferenceStore.go b/store/storetest/mocks/PreferenceStore.go index 63222c88f6..ca15ce385d 100644 --- a/store/storetest/mocks/PreferenceStore.go +++ b/store/storetest/mocks/PreferenceStore.go @@ -6,7 +6,6 @@ package mocks import mock "github.com/stretchr/testify/mock" import model "github.com/mattermost/mattermost-server/model" -import store "github.com/mattermost/mattermost-server/store" // PreferenceStore is an autogenerated mock type for the PreferenceStore type type PreferenceStore struct { @@ -37,15 +36,15 @@ func (_m *PreferenceStore) CleanupFlagsBatch(limit int64) (int64, *model.AppErro } // Delete provides a mock function with given fields: userId, category, name -func (_m *PreferenceStore) Delete(userId string, category string, name string) store.StoreChannel { +func (_m *PreferenceStore) Delete(userId string, category string, name string) *model.AppError { ret := _m.Called(userId, category, name) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string, string, string) store.StoreChannel); ok { + var r0 *model.AppError + if rf, ok := ret.Get(0).(func(string, string, string) *model.AppError); ok { r0 = rf(userId, category, name) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.AppError) } } diff --git a/store/storetest/preference_store.go b/store/storetest/preference_store.go index da937f8dfc..8b5ca786af 100644 --- a/store/storetest/preference_store.go +++ b/store/storetest/preference_store.go @@ -331,8 +331,8 @@ func testPreferenceDelete(t *testing.T, ss store.Store) { require.Nil(t, err) assert.Len(t, preferences, 1, "should've returned 1 preference") - if result := <-ss.Preference().Delete(preference.UserId, preference.Category, preference.Name); result.Err != nil { - t.Fatal(result.Err) + if err = ss.Preference().Delete(preference.UserId, preference.Category, preference.Name); err != nil { + t.Fatal(err) } preferences, err = ss.Preference().GetAll(preference.UserId) require.Nil(t, err)