migrate groupsBySyncableBaseQuery (#30926)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6b48c67eeb
Коммит
f302b9844e
@@ -1284,34 +1284,42 @@ func (s *SqlGroupStore) ChannelMembersToRemove(channelID *string) ([]*model.Chan
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *SqlGroupStore) groupsBySyncableBaseQuery(st model.GroupSyncableType, t selectType, syncableID string, opts model.GroupSearchOpts) sq.SelectBuilder {
|
func (s *SqlGroupStore) groupsBySyncableBaseQuery(st model.GroupSyncableType, t selectType, syncableID string, opts model.GroupSearchOpts) sq.SelectBuilder {
|
||||||
selectStrs := map[selectType]string{
|
var query sq.SelectBuilder
|
||||||
selectGroups: "UserGroups.*, gs.SchemeAdmin AS SyncableSchemeAdmin",
|
switch t {
|
||||||
selectCountGroups: "COUNT(*)",
|
case selectGroups:
|
||||||
|
query = s.userGroupsSelectQuery.
|
||||||
|
Column("gs.SchemeAdmin AS SyncableSchemeAdmin")
|
||||||
|
case selectCountGroups:
|
||||||
|
query = s.getQueryBuilder().
|
||||||
|
Select("COUNT(*)").
|
||||||
|
From("UserGroups")
|
||||||
}
|
}
|
||||||
|
|
||||||
var table string
|
|
||||||
var idCol string
|
|
||||||
if st == model.GroupSyncableTypeTeam {
|
if st == model.GroupSyncableTypeTeam {
|
||||||
table = "GroupTeams"
|
query = query.
|
||||||
idCol = "TeamId"
|
Join("GroupTeams gs ON gs.GroupId = UserGroups.Id").
|
||||||
|
Where(sq.Eq{
|
||||||
|
"gs.TeamId": syncableID,
|
||||||
|
"gs.DeleteAt": 0,
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
table = "GroupChannels"
|
query = query.
|
||||||
idCol = "ChannelId"
|
Join("GroupChannels gs ON gs.GroupId = UserGroups.Id").
|
||||||
|
Where(sq.Eq{
|
||||||
|
"gs.ChannelId": syncableID,
|
||||||
|
"gs.DeleteAt": 0,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
query := s.getQueryBuilder().
|
query = query.
|
||||||
Select(selectStrs[t]).
|
Where(sq.Eq{
|
||||||
From(fmt.Sprintf("%s gs", table)).
|
"UserGroups.DeleteAt": 0,
|
||||||
LeftJoin("UserGroups ON gs.GroupId = UserGroups.Id").
|
})
|
||||||
Where(fmt.Sprintf("UserGroups.DeleteAt = 0 AND gs.%s = ? AND gs.DeleteAt = 0", idCol), syncableID)
|
|
||||||
|
|
||||||
if opts.IncludeMemberCount && t == selectGroups {
|
if opts.IncludeMemberCount && t == selectGroups {
|
||||||
query = s.getQueryBuilder().
|
query = query.
|
||||||
Select(fmt.Sprintf("UserGroups.*, coalesce(Members.MemberCount, 0) AS MemberCount, Group%ss.SchemeAdmin AS SyncableSchemeAdmin", st)).
|
Column("coalesce(Members.MemberCount, 0) AS MemberCount").
|
||||||
From("UserGroups").
|
|
||||||
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 = UserGroups.Id").
|
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 = UserGroups.Id").
|
||||||
LeftJoin(fmt.Sprintf("%[1]s ON %[1]s.GroupId = UserGroups.Id", table)).
|
|
||||||
Where(fmt.Sprintf("UserGroups.DeleteAt = 0 AND %[1]s.DeleteAt = 0 AND %[1]s.%[2]s = ?", table, idCol), syncableID).
|
|
||||||
OrderBy("UserGroups.DisplayName")
|
OrderBy("UserGroups.DisplayName")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user