]> git.openstreetmap.org Git - rails.git/blob - app/controllers/concerns/query_methods.rb
2d0bfee53a307c95f7a27b944815c2e3e0f982f5
[rails.git] / app / controllers / concerns / query_methods.rb
1 module QueryMethods
2   extend ActiveSupport::Concern
3
4   private
5
6   ##
7   # Limit the result according to request parameters and settings
8   def query_limit(items)
9     items.limit(query_limit_value)
10   end
11
12   ##
13   # Get query limit value from request parameters and settings
14   def query_limit_value
15     max_limit = Settings["max_#{controller_name.singularize}_query_limit"]
16     default_limit = Settings["default_#{controller_name.singularize}_query_limit"]
17     if params[:limit]
18       if params[:limit].to_i.positive? && params[:limit].to_i <= max_limit
19         params[:limit].to_i
20       else
21         raise OSM::APIBadUserInput, "#{controller_name.classify} limit must be between 1 and #{max_limit}"
22       end
23     else
24       default_limit
25     end
26   end
27 end