[MM-21946] [MM-21945] Ensure deleted groups are not returned from the groups API (#13747)
* MM-21946 Ensure deleted groups are not returned from the groups API * MM-21946 Only append to query at the end * MM-21946 Add DeleteAt check to the top of the GetGroups function and clean up the formatting a bit * MM-21946 Move the From statement into the next block
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
9726a917cb
Коммит
afa35ac575
@@ -905,7 +905,7 @@ func (s *SqlGroupStore) groupsBySyncableBaseQuery(st model.GroupSyncableType, t
|
||||
From("UserGroups ug").
|
||||
LeftJoin("(SELECT GroupMembers.GroupId, COUNT(*) AS MemberCount FROM GroupMembers LEFT JOIN Users ON Users.Id = GroupMembers.UserId WHERE GroupMembers.DeleteAt = 0 AND Users.DeleteAt = 0 GROUP BY GroupId) AS Members ON Members.GroupId = ug.Id").
|
||||
LeftJoin(fmt.Sprintf("%[1]s ON %[1]s.GroupId = ug.Id", table)).
|
||||
Where(fmt.Sprintf("%[1]s.DeleteAt = 0 AND %[1]s.%[2]s = ?", table, idCol), syncableID).
|
||||
Where(fmt.Sprintf("ug.DeleteAt = 0 AND %[1]s.DeleteAt = 0 AND %[1]s.%[2]s = ?", table, idCol), syncableID).
|
||||
OrderBy("ug.DisplayName")
|
||||
}
|
||||
|
||||
@@ -963,18 +963,21 @@ func (s *SqlGroupStore) GetGroupsByTeam(teamId string, opts model.GroupSearchOpt
|
||||
func (s *SqlGroupStore) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError) {
|
||||
var groups []*model.Group
|
||||
|
||||
groupsQuery := s.getQueryBuilder().Select("g.*").From("UserGroups g").Limit(uint64(perPage)).Offset(uint64(page * perPage)).OrderBy("g.DisplayName")
|
||||
groupsQuery := s.getQueryBuilder().Select("g.*")
|
||||
|
||||
if opts.IncludeMemberCount {
|
||||
groupsQuery = s.getQueryBuilder().
|
||||
Select("g.*, coalesce(Members.MemberCount, 0) AS MemberCount").
|
||||
From("UserGroups g").
|
||||
LeftJoin("(SELECT GroupMembers.GroupId, COUNT(*) AS MemberCount FROM GroupMembers LEFT JOIN Users ON Users.Id = GroupMembers.UserId WHERE GroupMembers.DeleteAt = 0 AND Users.DeleteAt = 0 GROUP BY GroupId) AS Members ON Members.GroupId = g.Id").
|
||||
Limit(uint64(perPage)).
|
||||
Offset(uint64(page * perPage)).
|
||||
OrderBy("g.DisplayName")
|
||||
LeftJoin("(SELECT GroupMembers.GroupId, COUNT(*) AS MemberCount FROM GroupMembers LEFT JOIN Users ON Users.Id = GroupMembers.UserId WHERE GroupMembers.DeleteAt = 0 AND Users.DeleteAt = 0 GROUP BY GroupId) AS Members ON Members.GroupId = g.Id")
|
||||
}
|
||||
|
||||
groupsQuery = groupsQuery.
|
||||
From("UserGroups g").
|
||||
Where("g.DeleteAt = 0").
|
||||
Limit(uint64(perPage)).
|
||||
Offset(uint64(page * perPage)).
|
||||
OrderBy("g.DisplayName")
|
||||
|
||||
if len(opts.Q) > 0 {
|
||||
pattern := fmt.Sprintf("%%%s%%", sanitizeSearchTerm(opts.Q, "\\"))
|
||||
operatorKeyword := "ILIKE"
|
||||
|
||||
Ссылка в новой задаче
Block a user