[MM-16184] Migrate "Team.GetChannelUnreadsForTeam" to Sync by default (#11139)

* [MM-16184] Migrate "Team.GetChannelUnreadsForTeam" to Sync by default

* Fix weird indentation
This commit is contained in:
Bolarinwa Balogun
2019-06-12 13:31:17 -04:00
committed by Jesús Espino
parent 76bab4f0c2
commit 793efb15f6
5 changed files with 38 additions and 33 deletions

View File

@@ -797,12 +797,11 @@ func (a *App) AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMembe
}
func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) {
result := <-a.Srv.Store.Team().GetChannelUnreadsForTeam(teamId, userId)
if result.Err != nil {
return nil, result.Err
channelUnreads, err := a.Srv.Store.Team().GetChannelUnreadsForTeam(teamId, userId)
if err != nil {
return nil, err
}
channelUnreads := result.Data.([]*model.ChannelUnread)
var teamUnread = &model.TeamUnread{
MsgCount: 0,
MentionCount: 0,

View File

@@ -788,27 +788,25 @@ func (s SqlTeamStore) GetChannelUnreadsForAllTeams(excludeTeamId, userId string)
})
}
func (s SqlTeamStore) GetChannelUnreadsForTeam(teamId, userId string) store.StoreChannel {
return store.Do(func(result *store.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})
func (s SqlTeamStore) GetChannelUnreadsForTeam(teamId, userId string) ([]*model.ChannelUnread, *model.AppError) {
query := `
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`
if err != nil {
result.Err = model.NewAppError("SqlTeamStore.GetChannelUnreadsForTeam", "store.sql_team.get_unread.app_error", nil, "teamId="+teamId+" "+err.Error(), http.StatusInternalServerError)
return
}
result.Data = data
})
var channels []*model.ChannelUnread
_, err := s.GetReplica().Select(&channels, query, map[string]interface{}{"TeamId": teamId, "UserId": userId})
if err != nil {
return nil, model.NewAppError("SqlTeamStore.GetChannelUnreadsForTeam", "store.sql_team.get_unread.app_error", nil, "teamId="+teamId+" "+err.Error(), http.StatusInternalServerError)
}
return channels, nil
}
func (s SqlTeamStore) RemoveMember(teamId string, userId string) store.StoreChannel {

View File

@@ -110,7 +110,7 @@ type TeamStore interface {
GetTeamsForUser(userId string) StoreChannel
GetTeamsForUserWithPagination(userId string, page, perPage int) StoreChannel
GetChannelUnreadsForAllTeams(excludeTeamId, userId string) StoreChannel
GetChannelUnreadsForTeam(teamId, userId string) StoreChannel
GetChannelUnreadsForTeam(teamId, userId string) ([]*model.ChannelUnread, *model.AppError)
RemoveMember(teamId string, userId string) StoreChannel
RemoveAllMembersByTeam(teamId string) StoreChannel
RemoveAllMembersByUser(userId string) StoreChannel

View File

@@ -286,19 +286,28 @@ func (_m *TeamStore) GetChannelUnreadsForAllTeams(excludeTeamId string, userId s
}
// GetChannelUnreadsForTeam provides a mock function with given fields: teamId, userId
func (_m *TeamStore) GetChannelUnreadsForTeam(teamId string, userId string) store.StoreChannel {
func (_m *TeamStore) GetChannelUnreadsForTeam(teamId string, userId string) ([]*model.ChannelUnread, *model.AppError) {
ret := _m.Called(teamId, userId)
var r0 store.StoreChannel
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok {
var r0 []*model.ChannelUnread
if rf, ok := ret.Get(0).(func(string, string) []*model.ChannelUnread); ok {
r0 = rf(teamId, userId)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(store.StoreChannel)
r0 = ret.Get(0).([]*model.ChannelUnread)
}
}
return r0
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(string, string) *model.AppError); ok {
r1 = rf(teamId, userId)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
}
// GetMember provides a mock function with given fields: teamId, userId

View File

@@ -1292,10 +1292,9 @@ func testGetChannelUnreadsForTeam(t *testing.T, ss store.Store) {
cm2 := &model.ChannelMember{ChannelId: c2.Id, UserId: m1.UserId, NotifyProps: model.GetDefaultChannelNotifyProps(), MsgCount: 90}
store.Must(ss.Channel().SaveMember(cm2))
if r1 := <-ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId); r1.Err != nil {
t.Fatal(r1.Err)
if ms, err := ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId); err != nil {
t.Fatal(err)
} else {
ms := r1.Data.([]*model.ChannelUnread)
if len(ms) != 2 {
t.Fatal("wrong length")
}