PLT-4481 Fix member count for team user lists and channel invite list (#4422)
* Fix member count for team user lists and channel invite list * Fix client unit test
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
263f290683
Коммит
00787974d0
@@ -467,7 +467,7 @@ func (s SqlTeamStore) GetMembers(teamId string, offset int, limit int) StoreChan
|
||||
return storeChannel
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) GetMemberCount(teamId string) StoreChannel {
|
||||
func (s SqlTeamStore) GetTotalMemberCount(teamId string) StoreChannel {
|
||||
storeChannel := make(StoreChannel, 1)
|
||||
|
||||
go func() {
|
||||
@@ -482,10 +482,39 @@ func (s SqlTeamStore) GetMemberCount(teamId string) StoreChannel {
|
||||
WHERE
|
||||
TeamMembers.UserId = Users.Id
|
||||
AND TeamMembers.TeamId = :TeamId
|
||||
AND TeamMembers.DeleteAt = 0
|
||||
AND TeamMembers.DeleteAt = 0`, map[string]interface{}{"TeamId": teamId})
|
||||
if err != nil {
|
||||
result.Err = model.NewLocAppError("SqlTeamStore.GetTotalMemberCount", "store.sql_team.get_member_count.app_error", nil, "teamId="+teamId+" "+err.Error())
|
||||
} else {
|
||||
result.Data = count
|
||||
}
|
||||
|
||||
storeChannel <- result
|
||||
close(storeChannel)
|
||||
}()
|
||||
|
||||
return storeChannel
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) GetActiveMemberCount(teamId string) StoreChannel {
|
||||
storeChannel := make(StoreChannel, 1)
|
||||
|
||||
go func() {
|
||||
result := StoreResult{}
|
||||
|
||||
count, err := s.GetReplica().SelectInt(`
|
||||
SELECT
|
||||
count(*)
|
||||
FROM
|
||||
TeamMembers,
|
||||
Users
|
||||
WHERE
|
||||
TeamMembers.UserId = Users.Id
|
||||
AND TeamMembers.TeamId = :TeamId
|
||||
AND TeamMembers.DeleteAt = 0
|
||||
AND Users.DeleteAt = 0`, map[string]interface{}{"TeamId": teamId})
|
||||
if err != nil {
|
||||
result.Err = model.NewLocAppError("SqlTeamStore.GetMemberCount", "store.sql_team.get_member_count.app_error", nil, "teamId="+teamId+" "+err.Error())
|
||||
result.Err = model.NewLocAppError("SqlTeamStore.GetActiveMemberCount", "store.sql_team.get_member_count.app_error", nil, "teamId="+teamId+" "+err.Error())
|
||||
} else {
|
||||
result.Data = count
|
||||
}
|
||||
|
||||
@@ -482,11 +482,27 @@ func TestTeamStoreMemberCount(t *testing.T) {
|
||||
u1.Email = model.NewId()
|
||||
Must(store.User().Save(u1))
|
||||
|
||||
u2 := &model.User{}
|
||||
u2.Email = model.NewId()
|
||||
u2.DeleteAt = 1
|
||||
Must(store.User().Save(u2))
|
||||
|
||||
teamId1 := model.NewId()
|
||||
m1 := &model.TeamMember{TeamId: teamId1, UserId: u1.Id}
|
||||
Must(store.Team().SaveMember(m1))
|
||||
|
||||
if result := <-store.Team().GetMemberCount(teamId1); result.Err != nil {
|
||||
m2 := &model.TeamMember{TeamId: teamId1, UserId: u2.Id}
|
||||
Must(store.Team().SaveMember(m2))
|
||||
|
||||
if result := <-store.Team().GetTotalMemberCount(teamId1); result.Err != nil {
|
||||
t.Fatal(result.Err)
|
||||
} else {
|
||||
if result.Data.(int64) != 2 {
|
||||
t.Fatal("wrong count")
|
||||
}
|
||||
}
|
||||
|
||||
if result := <-store.Team().GetActiveMemberCount(teamId1); result.Err != nil {
|
||||
t.Fatal(result.Err)
|
||||
} else {
|
||||
if result.Data.(int64) != 1 {
|
||||
@@ -494,10 +510,18 @@ func TestTeamStoreMemberCount(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
m2 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()}
|
||||
Must(store.Team().SaveMember(m2))
|
||||
m3 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()}
|
||||
Must(store.Team().SaveMember(m3))
|
||||
|
||||
if result := <-store.Team().GetMemberCount(teamId1); result.Err != nil {
|
||||
if result := <-store.Team().GetTotalMemberCount(teamId1); result.Err != nil {
|
||||
t.Fatal(result.Err)
|
||||
} else {
|
||||
if result.Data.(int64) != 2 {
|
||||
t.Fatal("wrong count")
|
||||
}
|
||||
}
|
||||
|
||||
if result := <-store.Team().GetActiveMemberCount(teamId1); result.Err != nil {
|
||||
t.Fatal(result.Err)
|
||||
} else {
|
||||
if result.Data.(int64) != 1 {
|
||||
|
||||
@@ -70,7 +70,8 @@ type TeamStore interface {
|
||||
GetMember(teamId string, userId string) StoreChannel
|
||||
GetMembers(teamId string, offset int, limit int) StoreChannel
|
||||
GetMembersByIds(teamId string, userIds []string) StoreChannel
|
||||
GetMemberCount(teamId string) StoreChannel
|
||||
GetTotalMemberCount(teamId string) StoreChannel
|
||||
GetActiveMemberCount(teamId string) StoreChannel
|
||||
GetTeamsForUser(userId string) StoreChannel
|
||||
RemoveMember(teamId string, userId string) StoreChannel
|
||||
RemoveAllMembersByTeam(teamId string) StoreChannel
|
||||
|
||||
Ссылка в новой задаче
Block a user