class Datagrid::Drivers::Mongoid
@!visibility private
Public Class Methods
match?(scope)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 6 def self.match?(scope) return false unless defined?(::Mongoid) if scope.is_a?(Class) scope.ancestors.include?(::Mongoid::Document) else scope.is_a?(::Mongoid::Criteria) end end
Public Instance Methods
asc(scope, order)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 30 def asc(scope, order) scope.asc(order) end
batch_each(scope, batch_size) { |item| ... }
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 82 def batch_each(scope, batch_size, &block) current_page = 0 loop do batch = scope.skip(current_page * batch_size).limit(batch_size).to_a return if batch.empty? scope.skip(current_page * batch_size).limit(batch_size).each do |item| yield(item) end current_page+=1 end end
can_preload?(scope, association)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 102 def can_preload?(scope, association) !! scope.klass.reflect_on_association(association) end
column_names(scope)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 58 def column_names(scope) to_scope(scope).klass.fields.keys end
contains(scope, field, value)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 54 def contains(scope, field, value) scope.where(field => Regexp.compile(Regexp.escape(value))) end
default_cache_key(asset)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 94 def default_cache_key(asset) asset.id || raise(NotImplementedError) end
default_order(scope, column_name)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 38 def default_order(scope, column_name) has_column?(scope, column_name) ? column_name : nil end
default_preload(scope, value)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 98 def default_preload(scope, value) scope.includes(value) end
desc(scope, order)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 34 def desc(scope, order) scope.desc(order) end
greater_equal(scope, field, value)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 42 def greater_equal(scope, field, value) scope.where(field => {"$gte" => value}) end
has_column?(scope, column_name)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 50 def has_column?(scope, column_name) column_names(scope).include?(column_name.to_s) end
less_equal(scope, field, value)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 46 def less_equal(scope, field, value) scope.where(field => {"$lte" => value}) end
normalized_column_type(scope, field)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 62 def normalized_column_type(scope, field) type = to_scope(scope).klass.fields[field.to_s]&.type return nil unless type { [BigDecimal , String, Symbol, Range, Array, Hash, ] => :string, [::Mongoid::Boolean] => :boolean, [Date] => :date, TIMESTAMP_CLASSES => :timestamp, [Float] => :float, [Integer] => :integer, }.each do |keys, value| return value if keys.include?(type) end return :string end
to_scope(scope)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 15 def to_scope(scope) if scope.respond_to?(:all) scope.all else scope.where(nil) end end
where(scope, attribute, value)
click to toggle source
# File lib/datagrid/drivers/mongoid.rb, line 23 def where(scope, attribute, value) if value.is_a?(Range) value = {"$gte" => value.first, "$lte" => value.last} end scope.where(attribute => value) end