diff options
author | enahum <nahumhbl@gmail.com> | 2016-12-21 16:20:11 -0300 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2016-12-21 11:20:11 -0800 |
commit | 139cb52c99ac525f44a280803447bbbd88369f23 (patch) | |
tree | 49f425a74fc7e090f91ce6ab641d9abf9295dfd7 /store | |
parent | dce4205699bed68046f9dc6ed371ad959d93ee59 (diff) | |
download | chat-139cb52c99ac525f44a280803447bbbd88369f23.tar.gz chat-139cb52c99ac525f44a280803447bbbd88369f23.tar.bz2 chat-139cb52c99ac525f44a280803447bbbd88369f23.zip |
Fix teams unread count (#4848)
* Fix teams unread
* Moving logic out of the store
* fix unit test
Diffstat (limited to 'store')
-rw-r--r-- | store/sql_team_store.go | 20 | ||||
-rw-r--r-- | store/sql_team_store_test.go | 23 |
2 files changed, 26 insertions, 17 deletions
diff --git a/store/sql_team_store.go b/store/sql_team_store.go index cc6343169..023ce8a5a 100644 --- a/store/sql_team_store.go +++ b/store/sql_team_store.go @@ -589,24 +589,20 @@ func (s SqlTeamStore) GetTeamsUnreadForUser(teamId, userId string) StoreChannel go func() { result := StoreResult{} - var members []*model.TeamUnread - _, err := s.GetReplica().Select(&members, + var data []*model.ChannelUnread + _, err := s.GetReplica().Select(&data, `SELECT - Channels.TeamId, - SUM(Channels.TotalMsgCount - ChannelMembers.MsgCount) as MsgCount, - SUM(ChannelMembers.MentionCount) as MentionCount + Channels.TeamId, Channels.TotalMsgCount, ChannelMembers.MsgCount, ChannelMembers.MentionCount, ChannelMembers.NotifyProps FROM - Channels, - ChannelMembers + Channels, ChannelMembers WHERE - Channels.Id = ChannelMembers.ChannelId AND Channels.DeleteAt = 0 AND - ChannelMembers.UserId = :UserId AND Channels.TeamId != :TeamId - GROUP BY - Channels.TeamId`, map[string]interface{}{"UserId": userId, "TeamId": teamId}) + Id = ChannelId AND UserId = :UserId AND DeleteAt = 0 AND TeamId != :TeamId`, + map[string]interface{}{"UserId": userId, "TeamId": teamId}) + if err != nil { result.Err = model.NewLocAppError("SqlTeamStore.GetTeamsUnreadForUser", "store.sql_team.get_unread.app_error", nil, "userId="+userId+" "+err.Error()) } else { - result.Data = members + result.Data = data } storeChannel <- result diff --git a/store/sql_team_store_test.go b/store/sql_team_store_test.go index 5e6abd102..8a302a9e2 100644 --- a/store/sql_team_store_test.go +++ b/store/sql_team_store_test.go @@ -555,9 +555,15 @@ func TestMyTeamMembersUnread(t *testing.T) { if r1 := <-store.Team().GetTeamsUnreadForUser("", uid); r1.Err != nil { t.Fatal(r1.Err) } else { - ms := r1.Data.([]*model.TeamUnread) - - if len(ms) != 2 { + ms := r1.Data.([]*model.ChannelUnread) + membersMap := make(map[string]bool) + for i := range ms { + id := ms[i].TeamId + if _, ok := membersMap[id]; !ok { + membersMap[id] = true + } + } + if len(membersMap) != 2 { t.Fatal("Should be the unreads for all the teams") } } @@ -565,9 +571,16 @@ func TestMyTeamMembersUnread(t *testing.T) { if r2 := <-store.Team().GetTeamsUnreadForUser(teamId1, uid); r2.Err != nil { t.Fatal(r2.Err) } else { - ms := r2.Data.([]*model.TeamUnread) + ms := r2.Data.([]*model.ChannelUnread) + membersMap := make(map[string]bool) + for i := range ms { + id := ms[i].TeamId + if _, ok := membersMap[id]; !ok { + membersMap[id] = true + } + } - if len(ms) != 1 { + if len(membersMap) != 1 { t.Fatal("Should be the unreads for just one team") } } |