коммит произвёл
GitHub
родитель
d172ff1881
Коммит
3dd9e3715c
@@ -1073,66 +1073,6 @@ func (s SqlChannelStore) GetChannels(teamId string, userId string, opts *model.C
|
||||
return channels, nil
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetChannelsWithCursor(teamId string, userId string, opts *model.ChannelSearchOpts, afterChannelID string) (model.ChannelList, error) {
|
||||
query := s.getQueryBuilder().
|
||||
Select("ch.*").
|
||||
From("Channels ch, ChannelMembers cm").
|
||||
Where(
|
||||
sq.And{
|
||||
sq.Expr("ch.Id = cm.ChannelId"),
|
||||
sq.Eq{"cm.UserId": userId},
|
||||
},
|
||||
).
|
||||
OrderBy("ch.Id")
|
||||
|
||||
if opts.PerPage != nil {
|
||||
// The limit is verified at the GraphQL layer.
|
||||
query = query.Limit(uint64(*opts.PerPage))
|
||||
}
|
||||
|
||||
if afterChannelID != "" {
|
||||
query = query.Where(sq.Gt{"ch.Id": afterChannelID})
|
||||
}
|
||||
|
||||
if teamId != "" {
|
||||
query = query.Where(sq.Or{
|
||||
sq.Eq{"ch.TeamId": teamId},
|
||||
sq.Eq{"ch.TeamId": ""},
|
||||
})
|
||||
}
|
||||
|
||||
if opts.IncludeDeleted {
|
||||
if opts.LastDeleteAt != 0 {
|
||||
// We filter by non-archived, and archived >= a timestamp.
|
||||
query = query.Where(sq.Or{
|
||||
sq.Eq{"ch.DeleteAt": 0},
|
||||
sq.GtOrEq{"ch.DeleteAt": opts.LastDeleteAt},
|
||||
})
|
||||
}
|
||||
// If opts.LastDeleteAt is not set, we include everything. That means no filter is needed.
|
||||
} else {
|
||||
// Don't include archived channels.
|
||||
query = query.Where(sq.Eq{"ch.DeleteAt": 0})
|
||||
}
|
||||
|
||||
if opts.LastUpdateAt > 0 {
|
||||
query = query.Where(sq.GtOrEq{"ch.UpdateAt": opts.LastUpdateAt})
|
||||
}
|
||||
|
||||
channels := model.ChannelList{}
|
||||
sql, args, err := query.ToSql()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "getchannels_tosql")
|
||||
}
|
||||
|
||||
err = s.GetReplicaX().Select(&channels, sql, args...)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to get channels with TeamId=%s and UserId=%s", teamId, userId)
|
||||
}
|
||||
|
||||
return channels, nil
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetChannelsByUser(userId string, includeDeleted bool, lastDeleteAt, pageSize int, fromChannelID string) (model.ChannelList, error) {
|
||||
query := s.getQueryBuilder().
|
||||
Select("Channels.*").
|
||||
@@ -3050,86 +2990,6 @@ func (s SqlChannelStore) GetMembersForUser(teamID string, userID string) (model.
|
||||
return dbMembers.ToModel(), nil
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetMembersForUserWithCursor(userID, teamID string, opts *store.ChannelMemberGraphQLSearchOpts) (model.ChannelMembers, error) {
|
||||
query := s.getQueryBuilder().
|
||||
Select(
|
||||
"ChannelMembers.ChannelId",
|
||||
"ChannelMembers.UserId",
|
||||
"ChannelMembers.Roles",
|
||||
"ChannelMembers.LastViewedAt",
|
||||
"ChannelMembers.MsgCount",
|
||||
"ChannelMembers.MentionCount",
|
||||
"ChannelMembers.MentionCountRoot",
|
||||
"COALESCE(ChannelMembers.UrgentMentionCount, 0) AS UrgentMentionCount",
|
||||
"ChannelMembers.MsgCountRoot",
|
||||
"ChannelMembers.NotifyProps",
|
||||
"ChannelMembers.LastUpdateAt",
|
||||
"ChannelMembers.SchemeUser",
|
||||
"ChannelMembers.SchemeAdmin",
|
||||
"ChannelMembers.SchemeGuest",
|
||||
"TeamScheme.DefaultChannelGuestRole TeamSchemeDefaultGuestRole",
|
||||
"TeamScheme.DefaultChannelUserRole TeamSchemeDefaultUserRole",
|
||||
"TeamScheme.DefaultChannelAdminRole TeamSchemeDefaultAdminRole",
|
||||
"ChannelScheme.DefaultChannelGuestRole ChannelSchemeDefaultGuestRole",
|
||||
"ChannelScheme.DefaultChannelUserRole ChannelSchemeDefaultUserRole",
|
||||
"ChannelScheme.DefaultChannelAdminRole ChannelSchemeDefaultAdminRole").
|
||||
From("ChannelMembers").
|
||||
InnerJoin("Channels ON ChannelMembers.ChannelId = Channels.Id").
|
||||
LeftJoin("Schemes ChannelScheme ON Channels.SchemeId = ChannelScheme.Id").
|
||||
LeftJoin("Teams ON Channels.TeamId = Teams.Id").
|
||||
LeftJoin("Schemes TeamScheme ON Teams.SchemeId = TeamScheme.Id").
|
||||
Where(sq.Eq{
|
||||
"ChannelMembers.UserId": userID,
|
||||
"Channels.DeleteAt": 0,
|
||||
}).
|
||||
OrderBy("ChannelId, UserId ASC").
|
||||
// The limit is verified at the GraphQL layer.
|
||||
Limit(uint64(opts.Limit))
|
||||
|
||||
if teamID != "" {
|
||||
if opts.ExcludeTeam {
|
||||
// Exclude this team and DM/GMs
|
||||
query = query.Where(sq.And{
|
||||
sq.NotEq{"Channels.TeamId": teamID},
|
||||
sq.NotEq{"Channels.TeamId": ""},
|
||||
})
|
||||
} else {
|
||||
// Include this team and DM/GMs
|
||||
query = query.Where(sq.Or{
|
||||
sq.Eq{"Channels.TeamId": teamID},
|
||||
sq.Eq{"Channels.TeamId": ""},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if opts.AfterChannel != "" && opts.AfterUser != "" {
|
||||
query = query.Where(sq.Or{
|
||||
sq.Gt{"ChannelMembers.ChannelId": opts.AfterChannel},
|
||||
sq.And{
|
||||
sq.Eq{"ChannelMembers.ChannelId": opts.AfterChannel},
|
||||
sq.Gt{"ChannelMembers.UserId": opts.AfterUser},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if opts.LastUpdateAt != 0 {
|
||||
query = query.Where(sq.GtOrEq{"ChannelMembers.LastUpdateAt": opts.LastUpdateAt})
|
||||
}
|
||||
|
||||
queryString, args, err := query.ToSql()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "getMembersForUserWithCursor_tosql")
|
||||
}
|
||||
|
||||
dbMembers := channelMemberWithSchemeRolesList{}
|
||||
err = s.GetReplicaX().Select(&dbMembers, queryString, args...)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to find ChannelMembers data with userId=%s", userID)
|
||||
}
|
||||
|
||||
return dbMembers.ToModel(), nil
|
||||
}
|
||||
|
||||
func (s SqlChannelStore) GetMembersForUserWithPagination(userId string, page, perPage int) (model.ChannelMembersWithTeamData, error) {
|
||||
dbMembers := channelMemberWithTeamWithSchemeRolesList{}
|
||||
offset := page * perPage
|
||||
|
||||
Ссылка в новой задаче
Block a user