Commit 06a73d67d6ad0dab7c04c7ab3e09af385d863416
1 parent
74d57813
Exists in
master
and in
21 other branches
Add pagination in api
Signed-off-by: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com>
Showing
1 changed file
with
13 additions
and
1 deletions
Show diff stats
lib/noosfero/api/helpers.rb
| ... | ... | @@ -131,6 +131,15 @@ module Noosfero |
| 131 | 131 | params[:order] || "created_at DESC" |
| 132 | 132 | end |
| 133 | 133 | |
| 134 | + def make_page_number_with_parameters(params) | |
| 135 | + params[:page] || 1 | |
| 136 | + end | |
| 137 | + | |
| 138 | + def make_per_page_with_parameters(params) | |
| 139 | + params[:per_page] ||= limit | |
| 140 | + params[:per_page].to_i | |
| 141 | + end | |
| 142 | + | |
| 134 | 143 | def by_reference(scope, params) |
| 135 | 144 | if params[:reference_id] |
| 136 | 145 | created_at = scope.find(params[:reference_id]).created_at |
| ... | ... | @@ -143,10 +152,13 @@ module Noosfero |
| 143 | 152 | def select_filtered_collection_of(object, method, params) |
| 144 | 153 | conditions = make_conditions_with_parameter(params) |
| 145 | 154 | order = make_order_with_parameters(params) |
| 155 | + page_number = make_page_number_with_parameters(params) | |
| 156 | + per_page = make_per_page_with_parameters(params) | |
| 146 | 157 | |
| 147 | 158 | objects = object.send(method) |
| 148 | 159 | objects = by_reference(objects, params) |
| 149 | - objects = objects.where(conditions).limit(limit).order(order) | |
| 160 | + | |
| 161 | + objects = objects.where(conditions).page(page_number).per_page(per_page).order(order) | |
| 150 | 162 | |
| 151 | 163 | objects |
| 152 | 164 | end | ... | ... |