summaryrefslogtreecommitdiffstats
path: root/store/sql_team_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'store/sql_team_store.go')
-rw-r--r--store/sql_team_store.go45
1 files changed, 40 insertions, 5 deletions
diff --git a/store/sql_team_store.go b/store/sql_team_store.go
index bd99ed95c..7d843b030 100644
--- a/store/sql_team_store.go
+++ b/store/sql_team_store.go
@@ -663,7 +663,7 @@ func (s SqlTeamStore) GetTeamsForUser(userId string) StoreChannel {
return storeChannel
}
-func (s SqlTeamStore) GetTeamsUnreadForUser(teamId, userId string) StoreChannel {
+func (s SqlTeamStore) GetChannelUnreadsForAllTeams(excludeTeamId, userId string) StoreChannel {
storeChannel := make(StoreChannel, 1)
go func() {
@@ -672,15 +672,50 @@ func (s SqlTeamStore) GetTeamsUnreadForUser(teamId, userId string) StoreChannel
var data []*model.ChannelUnread
_, err := s.GetReplica().Select(&data,
`SELECT
- Channels.TeamId, Channels.TotalMsgCount, ChannelMembers.MsgCount, ChannelMembers.MentionCount, ChannelMembers.NotifyProps
+ Channels.TeamId TeamId, Channels.Id ChannelId, (Channels.TotalMsgCount - ChannelMembers.MsgCount) MsgCount, ChannelMembers.MentionCount MentionCount, ChannelMembers.NotifyProps NotifyProps
FROM
Channels, ChannelMembers
WHERE
- Id = ChannelId AND UserId = :UserId AND DeleteAt = 0 AND TeamId != :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": excludeTeamId})
if err != nil {
- result.Err = model.NewLocAppError("SqlTeamStore.GetTeamsUnreadForUser", "store.sql_team.get_unread.app_error", nil, "userId="+userId+" "+err.Error())
+ result.Err = model.NewLocAppError("SqlTeamStore.GetChannelUnreadsForAllTeams", "store.sql_team.get_unread.app_error", nil, "userId="+userId+" "+err.Error())
+ } else {
+ result.Data = data
+ }
+
+ storeChannel <- result
+ close(storeChannel)
+ }()
+
+ return storeChannel
+}
+
+func (s SqlTeamStore) GetChannelUnreadsForTeam(teamId, userId string) StoreChannel {
+ storeChannel := make(StoreChannel, 1)
+
+ go func() {
+ result := StoreResult{}
+
+ var data []*model.ChannelUnread
+ _, err := s.GetReplica().Select(&data,
+ `SELECT
+ Channels.TeamId TeamId, Channels.Id ChannelId, (Channels.TotalMsgCount - ChannelMembers.MsgCount) MsgCount, ChannelMembers.MentionCount MentionCount, ChannelMembers.NotifyProps NotifyProps
+ FROM
+ Channels, ChannelMembers
+ WHERE
+ Id = ChannelId
+ AND UserId = :UserId
+ AND TeamId = :TeamId
+ AND DeleteAt = 0`,
+ map[string]interface{}{"TeamId": teamId, "UserId": userId})
+
+ if err != nil {
+ result.Err = model.NewLocAppError("SqlTeamStore.GetChannelUnreadsForTeam", "store.sql_team.get_unread.app_error", nil, "teamId="+teamId+" "+err.Error())
} else {
result.Data = data
}