From cff942f5bf3771956176741cc29689c730626982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Villablanca=20V=C3=A1squez?= Date: Mon, 1 Jul 2019 11:19:44 -0400 Subject: [PATCH] Migrates Channel.GetMembersForUserWithPagination to sync by default (#11232) * Migrates Channel.AutocompleteInTeam, Channel.SearchInTeam and Channel.SearchMore to sync by default * Migrates Channel.GetMembersForUserWithPagination to sync by default --- app/channel.go | 7 +++---- store/sqlstore/channel_store.go | 19 ++++++++----------- store/store.go | 2 +- store/storetest/channel_store.go | 9 ++++----- store/storetest/mocks/ChannelStore.go | 19 ++++++++++++++----- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/app/channel.go b/app/channel.go index 83193e5be4..d490b970da 100644 --- a/app/channel.go +++ b/app/channel.go @@ -1304,12 +1304,11 @@ func (a *App) GetChannelMembersForUser(teamId string, userId string) (*model.Cha } func (a *App) GetChannelMembersForUserWithPagination(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError) { - result := <-a.Srv.Store.Channel().GetMembersForUserWithPagination(teamId, userId, page, perPage) - if result.Err != nil { - return nil, result.Err + m, err := a.Srv.Store.Channel().GetMembersForUserWithPagination(teamId, userId, page, perPage) + if err != nil { + return nil, err } - m := result.Data.(*model.ChannelMembers) members := make([]*model.ChannelMember, 0) if m != nil { for _, member := range *m { diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index f6146a2a4b..f9a21433c3 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -1897,19 +1897,16 @@ func (s SqlChannelStore) GetMembersForUser(teamId string, userId string) (*model return dbMembers.ToModel(), nil } -func (s SqlChannelStore) GetMembersForUserWithPagination(teamId, userId string, page, perPage int) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - var dbMembers channelMemberWithSchemeRolesList - offset := page * perPage - _, err := s.GetReplica().Select(&dbMembers, CHANNEL_MEMBERS_WITH_SCHEME_SELECT_QUERY+"WHERE ChannelMembers.UserId = :UserId Limit :Limit Offset :Offset", map[string]interface{}{"TeamId": teamId, "UserId": userId, "Limit": perPage, "Offset": offset}) +func (s SqlChannelStore) GetMembersForUserWithPagination(teamId, userId string, page, perPage int) (*model.ChannelMembers, *model.AppError) { + var dbMembers channelMemberWithSchemeRolesList + offset := page * perPage + _, err := s.GetReplica().Select(&dbMembers, CHANNEL_MEMBERS_WITH_SCHEME_SELECT_QUERY+"WHERE ChannelMembers.UserId = :UserId Limit :Limit Offset :Offset", map[string]interface{}{"TeamId": teamId, "UserId": userId, "Limit": perPage, "Offset": offset}) - if err != nil { - result.Err = model.NewAppError("SqlChannelStore.GetMembersForUserWithPagination", "store.sql_channel.get_members.app_error", nil, "teamId="+teamId+", userId="+userId+", err="+err.Error(), http.StatusInternalServerError) - return - } + if err != nil { + return nil, model.NewAppError("SqlChannelStore.GetMembersForUserWithPagination", "store.sql_channel.get_members.app_error", nil, "teamId="+teamId+", userId="+userId+", err="+err.Error(), http.StatusInternalServerError) + } - result.Data = dbMembers.ToModel() - }) + return dbMembers.ToModel(), nil } func (s SqlChannelStore) AutocompleteInTeam(teamId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError) { diff --git a/store/store.go b/store/store.go index 2b49dbd22c..9536b63a9c 100644 --- a/store/store.go +++ b/store/store.go @@ -180,7 +180,7 @@ type ChannelStore interface { IncrementMentionCount(channelId string, userId string) *model.AppError AnalyticsTypeCount(teamId string, channelType string) (int64, *model.AppError) GetMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) - GetMembersForUserWithPagination(teamId, userId string, page, perPage int) StoreChannel + GetMembersForUserWithPagination(teamId, userId string, page, perPage int) (*model.ChannelMembers, *model.AppError) AutocompleteInTeam(teamId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError) AutocompleteInTeamForSearch(teamId string, userId string, term string, includeDeleted bool) (*model.ChannelList, *model.AppError) SearchAllChannels(term string, opts ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError) diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index e4845fa058..9d9eff2839 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -1641,13 +1641,12 @@ func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Stor m2.NotifyProps = model.GetDefaultChannelNotifyProps() store.Must(ss.Channel().SaveMember(&m2)) - cresult := <-ss.Channel().GetMembersForUserWithPagination(o1.TeamId, m1.UserId, 0, 1) - members := cresult.Data.(*model.ChannelMembers) - + members, err := ss.Channel().GetMembersForUserWithPagination(o1.TeamId, m1.UserId, 0, 1) + require.Nil(t, err) assert.Len(t, *members, 1) - cresult = <-ss.Channel().GetMembersForUserWithPagination(o1.TeamId, m1.UserId, 1, 1) - members = cresult.Data.(*model.ChannelMembers) + members, err = ss.Channel().GetMembersForUserWithPagination(o1.TeamId, m1.UserId, 1, 1) + require.Nil(t, err) assert.Len(t, *members, 1) } diff --git a/store/storetest/mocks/ChannelStore.go b/store/storetest/mocks/ChannelStore.go index 37dc1e35f6..f31bdf72f5 100644 --- a/store/storetest/mocks/ChannelStore.go +++ b/store/storetest/mocks/ChannelStore.go @@ -898,19 +898,28 @@ func (_m *ChannelStore) GetMembersForUser(teamId string, userId string) (*model. } // GetMembersForUserWithPagination provides a mock function with given fields: teamId, userId, page, perPage -func (_m *ChannelStore) GetMembersForUserWithPagination(teamId string, userId string, page int, perPage int) store.StoreChannel { +func (_m *ChannelStore) GetMembersForUserWithPagination(teamId string, userId string, page int, perPage int) (*model.ChannelMembers, *model.AppError) { ret := _m.Called(teamId, userId, page, perPage) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string, string, int, int) store.StoreChannel); ok { + var r0 *model.ChannelMembers + if rf, ok := ret.Get(0).(func(string, string, int, int) *model.ChannelMembers); ok { r0 = rf(teamId, userId, page, perPage) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.ChannelMembers) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string, string, int, int) *model.AppError); ok { + r1 = rf(teamId, userId, page, perPage) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetMoreChannels provides a mock function with given fields: teamId, userId, offset, limit