Skip to content

Commit 4a273fb

Browse files
committed
Import fixes for pagination from jsonapi.rb PR
See stas/jsonapi.rb#91 for details on what these fix.
1 parent 7aa526f commit 4a273fb

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

app/controllers/alchemy/json_api/pages_controller.rb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,42 @@ def base_page_scope
139139
def jsonapi_serializer_class(_resource, _is_collection)
140140
::Alchemy::JsonApi::PageSerializer
141141
end
142+
143+
# These overrides have to be in place until
144+
# https://github.com/stas/jsonapi.rb/pull/91
145+
# is merged and released
146+
def jsonapi_paginate(resources)
147+
@_jsonapi_original_size = resources.size
148+
super
149+
end
150+
151+
def jsonapi_pagination_meta(resources)
152+
return {} unless JSONAPI::Rails.is_collection?(resources)
153+
154+
_, limit, page = jsonapi_pagination_params
155+
156+
numbers = { current: page }
157+
158+
total = @_jsonapi_original_size
159+
160+
last_page = [1, (total.to_f / limit).ceil].max
161+
162+
if page > 1
163+
numbers[:first] = 1
164+
numbers[:prev] = page - 1
165+
end
166+
167+
if page < last_page
168+
numbers[:next] = page + 1
169+
numbers[:last] = last_page
170+
end
171+
172+
if total.present?
173+
numbers[:records] = total
174+
end
175+
176+
numbers
177+
end
142178
end
143179
end
144180
end

0 commit comments

Comments
 (0)