MM-39918: mmctl: list archived private channels in channel list command with system admin user (#28676)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
7846ac86b4
Коммит
5ebdea506f
@@ -1490,24 +1490,37 @@ func (s SqlChannelStore) GetDeletedByName(teamId string, name string) (*model.Ch
|
||||
return &channel, nil
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetDeleted(teamId string, offset int, limit int, userId string) (model.ChannelList, error) {
|
||||
func (s SqlChannelStore) GetDeleted(teamId string, offset int, limit int, userId string, skipTeamMembershipCheck bool) (model.ChannelList, error) {
|
||||
channels := model.ChannelList{}
|
||||
|
||||
query := `
|
||||
SELECT * FROM Channels
|
||||
WHERE (TeamId = ? OR TeamId = '')
|
||||
AND DeleteAt != 0
|
||||
AND Type != ?
|
||||
UNION
|
||||
SELECT * FROM Channels
|
||||
WHERE (TeamId = ? OR TeamId = '')
|
||||
AND DeleteAt != 0
|
||||
AND Type = ?
|
||||
AND Id IN (SELECT ChannelId FROM ChannelMembers WHERE UserId = ?)
|
||||
ORDER BY DisplayName LIMIT ? OFFSET ?
|
||||
`
|
||||
builder := s.getQueryBuilder().
|
||||
Select("*").
|
||||
From("Channels").
|
||||
Where(sq.Or{
|
||||
sq.Eq{"TeamId": teamId},
|
||||
sq.Eq{"TeamId": ""},
|
||||
}).
|
||||
Where(sq.NotEq{"DeleteAt": 0}).
|
||||
OrderBy("DisplayName").
|
||||
Limit(uint64(limit)).
|
||||
Offset(uint64(offset))
|
||||
|
||||
if err := s.GetReplicaX().Select(&channels, query, teamId, model.ChannelTypePrivate, teamId, model.ChannelTypePrivate, userId, limit, offset); err != nil {
|
||||
if !skipTeamMembershipCheck {
|
||||
builder = builder.Where(sq.Or{
|
||||
sq.NotEq{"Type": model.ChannelTypePrivate},
|
||||
sq.And{
|
||||
sq.Eq{"Type": model.ChannelTypePrivate},
|
||||
sq.Expr("Id IN (?)", sq.Select("ChannelId").From("ChannelMembers").Where(sq.Eq{"UserId": userId})),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
query, args, err := builder.ToSql()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "GetDeleted_ToSql")
|
||||
}
|
||||
|
||||
if err := s.GetReplicaX().Select(&channels, query, args...); err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, store.NewErrNotFound("Channel", fmt.Sprintf("TeamId=%s,UserId=%s", teamId, userId))
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user