[openstreetmap/openstreetmap-website] Before/after id pagination for user diary comments (PR #4239)
Tom Hughes
notifications at github.com
Fri Sep 8 17:08:03 UTC 2023
@tomhughes commented on this pull request.
> + def get_page_items(items, includes)
+ id_column = "#{items.table_name}.id"
+ page_items = if params[:before]
+ items.where("#{id_column} < ?", params[:before]).order(:id => :desc)
+ elsif params[:after]
+ items.where("#{id_column} > ?", params[:after]).order(:id => :asc)
+ else
+ items.order(:id => :desc)
+ end
+
+ page_items = page_items.limit(20)
+ page_items = page_items.includes(includes)
+ page_items = page_items.sort.reverse
+
+ newer_items_id = page_items.count.positive? && items.exists?(["#{id_column} > ?", page_items.first.id]) && page_items.first.id
+ older_items_id = page_items.count.positive? && items.exists?(["#{id_column} < ?", page_items.last.id]) && page_items.last.id
I think it would be better to write these as guarded assignments - it took me quite a while to figure out what you were doing. I suggest doing:
```ruby
newer_items_id = page_items.first.id if page_items.count.positive? && items.exists?(["#{id_column} > ?", page_items.first.id])
```
--
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/4239#pullrequestreview-1617922205
You are receiving this because you are subscribed to this thread.
Message ID: <openstreetmap/openstreetmap-website/pull/4239/review/1617922205 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/rails-dev/attachments/20230908/9d749f64/attachment-0001.htm>
More information about the rails-dev
mailing list