class ExtJs::Postgres
Public Class Methods
db_opts(params, opts = {})
click to toggle source
# File lib/ruby-ext-js.rb, line 5 def self.db_opts(params, opts = {}); raise NotImplementedError; end
Protected Class Methods
allowed_filters()
click to toggle source
Filtering
# File lib/ruby-ext-js.rb, line 54 def self.allowed_filters [] end
get_filter_data( params )
click to toggle source
# File lib/ruby-ext-js.rb, line 58 def self.get_filter_data( params ) return unless params["filter"] && params["filter"]["0"] if allowed_filters.include?( params["filter"]["0"]["field"] ) { :field => params["filter"]["0"]["field"], :values => Array( params["filter"]["0"]["data"]["value"] ) } end end
limit_param( params, max_limit )
click to toggle source
Given Ext.js params hash, returns a Datamapper limit param
# File lib/ruby-ext-js.rb, line 48 def self.limit_param( params, max_limit ) [( params["limit"] && params["limit"].to_i ) || 25, max_limit].min end
offset_param( params, max_offset )
click to toggle source
Given Ext.js params hash, returns a Datamapper offset param
# File lib/ruby-ext-js.rb, line 43 def self.offset_param( params, max_offset ) [( params["start"] && params["start"].to_i ) || 0, max_offset].min end
order_param( params )
click to toggle source
Given Ext.js params hash, returns a Datamapper sort param
# File lib/ruby-ext-js.rb, line 32 def self.order_param( params ) sort = case params["sort"] when "created_at" :id else params["sort"] ? params["sort"].to_sym : :id end params["dir"] =~ /desc/i ? sort.desc : sort.asc end
pagination_opts(params, opts = {})
click to toggle source
Converts Ext.js’ wacky params structure into a Postgres
db query opts hash for pagination.
# File lib/ruby-ext-js.rb, line 11 def self.pagination_opts(params, opts = {}) opts = { :max_offset => 10000, :max_limit => 100 }.merge opts # Pagination offset = offset_param( params, opts[:max_offset] ) limit = limit_param( params, opts[:max_limit] ) # Sort order order = order_param( params ) { :order => [order], :offset => offset, :limit => limit } end