MM-43780: Adjust getPostThread API for easier pagination (#20172)

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Ashish Bhate
2022-05-26 03:48:05 +05:30
коммит произвёл GitHub
родитель b10ff1b1f7
Коммит 2315fcf05b
3 изменённых файлов: 84 добавлений и 36 удалений

Просмотреть файл

@@ -604,23 +604,34 @@ func (s *SqlPostStore) getPostWithCollapsedThreads(id, userID string, opts model
query = query.OrderBy("CreateAt " + sort + ", Id " + sort)
}
if opts.FromPost != "" && opts.FromCreateAt != 0 {
if opts.FromCreateAt != 0 {
if opts.Direction == "down" {
query = query.Where(sq.Or{
sq.Gt{"Posts.CreateAt": opts.FromCreateAt},
sq.And{
sq.Eq{"Posts.CreateAt": opts.FromCreateAt},
sq.Gt{"Posts.Id": opts.FromPost},
},
})
direction := sq.Gt{"Posts.CreateAt": opts.FromCreateAt}
if opts.FromPost != "" {
query = query.Where(sq.Or{
direction,
sq.And{
sq.Eq{"Posts.CreateAt": opts.FromCreateAt},
sq.Gt{"Posts.Id": opts.FromPost},
},
})
} else {
query = query.Where(direction)
}
} else {
query = query.Where(sq.Or{
sq.Lt{"Posts.CreateAt": opts.FromCreateAt},
sq.And{
sq.Eq{"Posts.CreateAt": opts.FromCreateAt},
sq.Lt{"Posts.Id": opts.FromPost},
},
})
direction := sq.Lt{"Posts.CreateAt": opts.FromCreateAt}
if opts.FromPost != "" {
query = query.Where(sq.Or{
direction,
sq.And{
sq.Eq{"Posts.CreateAt": opts.FromCreateAt},
sq.Lt{"Posts.Id": opts.FromPost},
},
})
} else {
query = query.Where(direction)
}
}
}
@@ -715,23 +726,34 @@ func (s *SqlPostStore) Get(ctx context.Context, id string, opts model.GetPostsOp
query = query.OrderBy("CreateAt " + sort + ", Id " + sort)
}
if opts.FromPost != "" && opts.FromCreateAt != 0 {
if opts.FromCreateAt != 0 {
if opts.Direction == "down" {
query = query.Where(sq.Or{
sq.Gt{"p.CreateAt": opts.FromCreateAt},
sq.And{
sq.Eq{"p.CreateAt": opts.FromCreateAt},
sq.Gt{"p.Id": opts.FromPost},
},
})
direction := sq.Gt{"p.CreateAt": opts.FromCreateAt}
if opts.FromPost != "" {
query = query.Where(sq.Or{
direction,
sq.And{
sq.Eq{"p.CreateAt": opts.FromCreateAt},
sq.Gt{"p.Id": opts.FromPost},
},
})
} else {
query = query.Where(direction)
}
} else {
query = query.Where(sq.Or{
sq.Lt{"p.CreateAt": opts.FromCreateAt},
sq.And{
sq.Eq{"p.CreateAt": opts.FromCreateAt},
sq.Lt{"p.Id": opts.FromPost},
},
})
direction := sq.Lt{"p.CreateAt": opts.FromCreateAt}
if opts.FromPost != "" {
query = query.Where(sq.Or{
direction,
sq.And{
sq.Eq{"p.CreateAt": opts.FromCreateAt},
sq.Lt{"p.Id": opts.FromPost},
},
})
} else {
query = query.Where(direction)
}
}
}