MM-31711 - Implement cursor paging for threads (#16748)
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
bb7e5b6e9d
Коммит
13616cac0f
@@ -188,10 +188,23 @@ func (s *SqlThreadStore) GetThreadsForUser(userId, teamId string, opts model.Get
|
||||
if opts.Since > 0 {
|
||||
newFetchConditions = sq.And{newFetchConditions, sq.GtOrEq{"ThreadMemberships.LastUpdated": opts.Since}}
|
||||
}
|
||||
order := "DESC"
|
||||
if opts.Before != "" {
|
||||
newFetchConditions = sq.And{
|
||||
newFetchConditions,
|
||||
sq.Expr(`LastReplyAt < (SELECT LastReplyAt FROM Threads WHERE PostId = ?)`, opts.Before),
|
||||
}
|
||||
}
|
||||
if opts.After != "" {
|
||||
order = "ASC"
|
||||
newFetchConditions = sq.And{
|
||||
newFetchConditions,
|
||||
sq.Expr(`LastReplyAt > (SELECT LastReplyAt FROM Threads WHERE PostId = ?)`, opts.After),
|
||||
}
|
||||
}
|
||||
if opts.Unread {
|
||||
newFetchConditions = sq.And{newFetchConditions, sq.Expr("ThreadMemberships.LastViewed < Threads.LastReplyAt")}
|
||||
}
|
||||
|
||||
var threads []*JoinedThread
|
||||
query, args, _ := s.getQueryBuilder().
|
||||
Select("Threads.*, Posts.*, ThreadMemberships.LastViewed as LastViewedAt, ThreadMemberships.UnreadMentions as UnreadMentions").
|
||||
@@ -201,9 +214,9 @@ func (s *SqlThreadStore) GetThreadsForUser(userId, teamId string, opts model.Get
|
||||
LeftJoin("Channels ON Posts.ChannelId = Channels.Id").
|
||||
LeftJoin("ThreadMemberships ON ThreadMemberships.PostId = Threads.PostId").
|
||||
Where(newFetchConditions).
|
||||
OrderBy("Threads.LastReplyAt DESC").
|
||||
Offset(pageSize * opts.Page).
|
||||
OrderBy("Threads.LastReplyAt " + order).
|
||||
Limit(pageSize).ToSql()
|
||||
|
||||
_, err := s.GetReplica().Select(&threads, query, args...)
|
||||
threadsChan <- store.StoreResult{Data: threads, NErr: err}
|
||||
close(threadsChan)
|
||||
|
||||
Ссылка в новой задаче
Block a user