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

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

* Fix weird indentation
Этот коммит содержится в:
Bolarinwa Balogun
2019-06-12 13:31:17 -04:00
коммит произвёл Jesús Espino
родитель 76bab4f0c2
Коммит 793efb15f6
5 изменённых файлов: 38 добавлений и 33 удалений

Просмотреть файл

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

Просмотреть файл

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

Просмотреть файл

@@ -110,7 +110,7 @@ type TeamStore interface {
GetTeamsForUser(userId string) StoreChannel GetTeamsForUser(userId string) StoreChannel
GetTeamsForUserWithPagination(userId string, page, perPage int) StoreChannel GetTeamsForUserWithPagination(userId string, page, perPage int) StoreChannel
GetChannelUnreadsForAllTeams(excludeTeamId, userId string) 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 RemoveMember(teamId string, userId string) StoreChannel
RemoveAllMembersByTeam(teamId string) StoreChannel RemoveAllMembersByTeam(teamId string) StoreChannel
RemoveAllMembersByUser(userId string) StoreChannel RemoveAllMembersByUser(userId string) StoreChannel

Просмотреть файл

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

Просмотреть файл

@@ -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} cm2 := &model.ChannelMember{ChannelId: c2.Id, UserId: m1.UserId, NotifyProps: model.GetDefaultChannelNotifyProps(), MsgCount: 90}
store.Must(ss.Channel().SaveMember(cm2)) store.Must(ss.Channel().SaveMember(cm2))
if r1 := <-ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId); r1.Err != nil { if ms, err := ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId); err != nil {
t.Fatal(r1.Err) t.Fatal(err)
} else { } else {
ms := r1.Data.([]*model.ChannelUnread)
if len(ms) != 2 { if len(ms) != 2 {
t.Fatal("wrong length") t.Fatal("wrong length")
} }