From 45b47ca9011a18d574e158b905b20dc055a3d27c Mon Sep 17 00:00:00 2001 From: piperRyan <35411044+piperRyan@users.noreply.github.com> Date: Tue, 2 Jul 2019 11:16:14 -0600 Subject: [PATCH] Migrate "User.GetSystemAdminProfiles" to Sync by default (#11491) --- app/security_update_check.go | 5 ++-- store/sqlstore/user_store.go | 40 ++++++++++++++---------------- store/store.go | 2 +- store/storetest/mocks/UserStore.go | 19 ++++++++++---- store/storetest/user_store.go | 6 ++--- 5 files changed, 38 insertions(+), 34 deletions(-) diff --git a/app/security_update_check.go b/app/security_update_check.go index c9d281c590..2e3a1b2a6d 100644 --- a/app/security_update_check.go +++ b/app/security_update_check.go @@ -94,12 +94,11 @@ func (s *Server) DoSecurityUpdateCheck() { for _, bulletin := range bulletins { if bulletin.AppliesToVersion == model.CurrentVersion { if props["SecurityBulletin_"+bulletin.Id] == "" { - results := <-s.Store.User().GetSystemAdminProfiles() - if results.Err != nil { + users, userErr := s.Store.User().GetSystemAdminProfiles() + if userErr != nil { mlog.Error("Failed to get system admins for security update information from Mattermost.") return } - users := results.Data.(map[string]*model.User) resBody, err := http.Get(SECURITY_URL + "/bulletins/" + bulletin.Id) if err != nil { diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index 7c32513a78..ebf0b2e6b9 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -972,33 +972,29 @@ func (us SqlUserStore) GetProfileByGroupChannelIdsForUser(userId string, channel return usersByChannelId, nil } -func (us SqlUserStore) GetSystemAdminProfiles() store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - query := us.usersQuery. - Where("Roles LIKE ?", "%system_admin%"). - OrderBy("u.Username ASC") +func (us SqlUserStore) GetSystemAdminProfiles() (map[string]*model.User, *model.AppError) { + query := us.usersQuery. + Where("Roles LIKE ?", "%system_admin%"). + OrderBy("u.Username ASC") - queryString, args, err := query.ToSql() - if err != nil { - result.Err = model.NewAppError("SqlUserStore.GetSystemAdminProfiles", "store.sql_user.app_error", nil, err.Error(), http.StatusInternalServerError) - return - } + queryString, args, err := query.ToSql() + if err != nil { + return nil, model.NewAppError("SqlUserStore.GetSystemAdminProfiles", "store.sql_user.app_error", nil, err.Error(), http.StatusInternalServerError) + } - var users []*model.User - if _, err := us.GetReplica().Select(&users, queryString, args...); err != nil { - result.Err = model.NewAppError("SqlUserStore.GetSystemAdminProfiles", "store.sql_user.get_sysadmin_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) - return - } + var users []*model.User + if _, err := us.GetReplica().Select(&users, queryString, args...); err != nil { + return nil, model.NewAppError("SqlUserStore.GetSystemAdminProfiles", "store.sql_user.get_sysadmin_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) + } - userMap := make(map[string]*model.User) + userMap := make(map[string]*model.User) - for _, u := range users { - u.Sanitize(map[string]bool{}) - userMap[u.Id] = u - } + for _, u := range users { + u.Sanitize(map[string]bool{}) + userMap[u.Id] = u + } - result.Data = userMap - }) + return userMap, nil } func (us SqlUserStore) GetByEmail(email string) (*model.User, *model.AppError) { diff --git a/store/store.go b/store/store.go index 864ae56ec9..d90e380946 100644 --- a/store/store.go +++ b/store/store.go @@ -280,7 +280,7 @@ type UserStore interface { GetEtagForAllProfiles() StoreChannel GetEtagForProfiles(teamId string) StoreChannel UpdateFailedPasswordAttempts(userId string, attempts int) StoreChannel - GetSystemAdminProfiles() StoreChannel + GetSystemAdminProfiles() (map[string]*model.User, *model.AppError) PermanentDelete(userId string) *model.AppError AnalyticsActiveCount(time int64) StoreChannel GetUnreadCount(userId string) (int64, error) diff --git a/store/storetest/mocks/UserStore.go b/store/storetest/mocks/UserStore.go index 8f83f32ed8..4b58258d17 100644 --- a/store/storetest/mocks/UserStore.go +++ b/store/storetest/mocks/UserStore.go @@ -633,19 +633,28 @@ func (_m *UserStore) GetRecentlyActiveUsersForTeam(teamId string, offset int, li } // GetSystemAdminProfiles provides a mock function with given fields: -func (_m *UserStore) GetSystemAdminProfiles() store.StoreChannel { +func (_m *UserStore) GetSystemAdminProfiles() (map[string]*model.User, *model.AppError) { ret := _m.Called() - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func() store.StoreChannel); ok { + var r0 map[string]*model.User + if rf, ok := ret.Get(0).(func() map[string]*model.User); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(map[string]*model.User) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func() *model.AppError); ok { + r1 = rf() + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetTeamGroupUsers provides a mock function with given fields: teamID diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index 9c1f97b7cc..7e44b228f7 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -1450,12 +1450,12 @@ func testUserStoreGetSystemAdminProfiles(t *testing.T, ss store.Store) { defer func() { require.Nil(t, ss.Bot().PermanentDelete(u3.Id)) }() t.Run("all system admin profiles", func(t *testing.T) { - result := <-ss.User().GetSystemAdminProfiles() - require.Nil(t, result.Err) + result, userError := ss.User().GetSystemAdminProfiles() + require.Nil(t, userError) assert.Equal(t, map[string]*model.User{ u1.Id: sanitized(u1), u3.Id: sanitized(u3), - }, result.Data.(map[string]*model.User)) + }, result) }) }