diff --git a/app/scheme.go b/app/scheme.go index 10a0a49f50..bde7af7cf7 100644 --- a/app/scheme.go +++ b/app/scheme.go @@ -103,11 +103,11 @@ func (a *App) GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([] return nil, err } - result := <-a.Srv.Store.Team().GetTeamsByScheme(scheme.Id, offset, limit) - if result.Err != nil { - return nil, result.Err + teams, err := a.Srv.Store.Team().GetTeamsByScheme(scheme.Id, offset, limit) + if err != nil { + return nil, err } - return result.Data.([]*model.Team), nil + return teams, nil } func (a *App) GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError) { diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index 79ce95f8c3..a821e8db6e 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -800,16 +800,13 @@ func (us SqlTeamStore) UpdateLastTeamIconUpdate(teamId string, curTime int64) *m return nil } -func (s SqlTeamStore) GetTeamsByScheme(schemeId string, offset int, limit int) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - var teams []*model.Team - _, err := s.GetReplica().Select(&teams, "SELECT * FROM Teams WHERE SchemeId = :SchemeId ORDER BY DisplayName LIMIT :Limit OFFSET :Offset", map[string]interface{}{"SchemeId": schemeId, "Offset": offset, "Limit": limit}) - if err != nil { - result.Err = model.NewAppError("SqlTeamStore.GetTeamsByScheme", "store.sql_team.get_by_scheme.app_error", nil, "schemeId="+schemeId+" "+err.Error(), http.StatusInternalServerError) - return - } - result.Data = teams - }) +func (s SqlTeamStore) GetTeamsByScheme(schemeId string, offset int, limit int) ([]*model.Team, *model.AppError) { + var teams []*model.Team + _, err := s.GetReplica().Select(&teams, "SELECT * FROM Teams WHERE SchemeId = :SchemeId ORDER BY DisplayName LIMIT :Limit OFFSET :Offset", map[string]interface{}{"SchemeId": schemeId, "Offset": offset, "Limit": limit}) + if err != nil { + return nil, model.NewAppError("SqlTeamStore.GetTeamsByScheme", "store.sql_team.get_by_scheme.app_error", nil, "schemeId="+schemeId+" "+err.Error(), http.StatusInternalServerError) + } + return teams, nil } // This function does the Advanced Permissions Phase 2 migration for TeamMember objects. It performs the migration diff --git a/store/store.go b/store/store.go index fe7b3c0d6e..4d731397fd 100644 --- a/store/store.go +++ b/store/store.go @@ -115,7 +115,7 @@ type TeamStore interface { RemoveAllMembersByTeam(teamId string) StoreChannel RemoveAllMembersByUser(userId string) *model.AppError UpdateLastTeamIconUpdate(teamId string, curTime int64) *model.AppError - GetTeamsByScheme(schemeId string, offset int, limit int) StoreChannel + GetTeamsByScheme(schemeId string, offset int, limit int) ([]*model.Team, *model.AppError) MigrateTeamMembers(fromTeamId string, fromUserId string) StoreChannel ResetAllTeamSchemes() StoreChannel ClearAllCustomRoleAssignments() StoreChannel diff --git a/store/storetest/mocks/TeamStore.go b/store/storetest/mocks/TeamStore.go index d248502225..5abfd76992 100644 --- a/store/storetest/mocks/TeamStore.go +++ b/store/storetest/mocks/TeamStore.go @@ -479,19 +479,28 @@ func (_m *TeamStore) GetTeamMembersForExport(userId string) ([]*model.TeamMember } // GetTeamsByScheme provides a mock function with given fields: schemeId, offset, limit -func (_m *TeamStore) GetTeamsByScheme(schemeId string, offset int, limit int) store.StoreChannel { +func (_m *TeamStore) GetTeamsByScheme(schemeId string, offset int, limit int) ([]*model.Team, *model.AppError) { ret := _m.Called(schemeId, offset, limit) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string, int, int) store.StoreChannel); ok { + var r0 []*model.Team + if rf, ok := ret.Get(0).(func(string, int, int) []*model.Team); ok { r0 = rf(schemeId, offset, limit) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).([]*model.Team) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string, int, int) *model.AppError); ok { + r1 = rf(schemeId, offset, limit) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetTeamsByUserId provides a mock function with given fields: userId diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index 0ce4d37fe5..62d28b489b 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -1366,22 +1366,19 @@ func testGetTeamsByScheme(t *testing.T, ss store.Store) { require.Nil(t, err) // Get the teams by a valid Scheme ID. - res1 := <-ss.Team().GetTeamsByScheme(s1.Id, 0, 100) - assert.Nil(t, res1.Err) - d1 := res1.Data.([]*model.Team) - assert.Len(t, d1, 2) + d, err := ss.Team().GetTeamsByScheme(s1.Id, 0, 100) + assert.Nil(t, err) + assert.Len(t, d, 2) // Get the teams by a valid Scheme ID where there aren't any matching Teams. - res2 := <-ss.Team().GetTeamsByScheme(s2.Id, 0, 100) - assert.Nil(t, res2.Err) - d2 := res2.Data.([]*model.Team) - assert.Len(t, d2, 0) + d, err = ss.Team().GetTeamsByScheme(s2.Id, 0, 100) + assert.Nil(t, err) + assert.Len(t, d, 0) // Get the teams by an invalid Scheme ID. - res3 := <-ss.Team().GetTeamsByScheme(model.NewId(), 0, 100) - assert.Nil(t, res3.Err) - d3 := res3.Data.([]*model.Team) - assert.Len(t, d3, 0) + d, err = ss.Team().GetTeamsByScheme(model.NewId(), 0, 100) + assert.Nil(t, err) + assert.Len(t, d, 0) } func testTeamStoreMigrateTeamMembers(t *testing.T, ss store.Store) {