class Datagrid::Drivers::Sequel
@!visibility private
Public Class Methods
Source
# File lib/datagrid/drivers/sequel.rb, line 7 def self.match?(scope) return false unless defined?(::Sequel) if scope.is_a?(Class) scope.ancestors.include?(::Sequel::Model) else scope.is_a?(::Sequel::Dataset) end end
Public Instance Methods
Source
# File lib/datagrid/drivers/sequel.rb, line 27 def asc(scope, order) scope.order(::Sequel.lit(order)) end
Source
# File lib/datagrid/drivers/sequel.rb, line 80 def batch_each(scope, batch_size, &block) if scope.opts[:limit] scope.each(&block) else scope.extension(:pagination).each_page(batch_size) do |page| page.each(&block) end end end
Source
# File lib/datagrid/drivers/sequel.rb, line 94 def can_preload?(scope, association) !!scope.model.association_reflection(association) end
Source
# File lib/datagrid/drivers/sequel.rb, line 51 def column_names(scope) scope.columns end
Source
# File lib/datagrid/drivers/sequel.rb, line 55 def contains(scope, field, value) field = prefix_table_name(scope, field) scope.where(Sequel.like(field, "%#{value}%")) end
Source
# File lib/datagrid/drivers/sequel.rb, line 76 def default_cache_key(asset) asset.id || raise(NotImplementedError) end
Source
# File lib/datagrid/drivers/sequel.rb, line 35 def default_order(scope, column_name) scope_has_column?(scope, column_name) ? ::Sequel.lit(prefix_table_name(scope, column_name)) : nil end
Source
# File lib/datagrid/drivers/sequel.rb, line 90 def default_preload(scope, value) scope.eager(value) end
Source
# File lib/datagrid/drivers/sequel.rb, line 31 def desc(scope, order) scope.order(::Sequel.desc(::Sequel.lit(order))) end
Source
# File lib/datagrid/drivers/sequel.rb, line 39 def greater_equal(scope, field, value) scope.where(::Sequel.lit("#{prefix_table_name(scope, field)} >= ?", value)) end
Source
# File lib/datagrid/drivers/sequel.rb, line 43 def less_equal(scope, field, value) scope.where(::Sequel.lit("#{prefix_table_name(scope, field)} <= ?", value)) end
Source
# File lib/datagrid/drivers/sequel.rb, line 60 def normalized_column_type(scope, field) type = column_type(scope, field) return nil unless type { %i[string blob time] => :string, %i[integer primary_key] => :integer, %i[float decimal] => :float, [:date] => :date, [:datetime] => :timestamp, [:boolean] => :boolean, }.each do |keys, value| return value if keys.include?(type) end end
Source
# File lib/datagrid/drivers/sequel.rb, line 47 def scope_has_column?(scope, column_name) scope.columns.include?(column_name.to_sym) end
Source
# File lib/datagrid/drivers/sequel.rb, line 17 def to_scope(scope) return scope if scope.is_a?(::Sequel::Dataset) scope.where({}) end
Source
# File lib/datagrid/drivers/sequel.rb, line 23 def where(scope, attribute, value) scope.where(attribute => value) end
Protected Instance Methods
Source
# File lib/datagrid/drivers/sequel.rb, line 104 def column_type(scope, field) scope_has_column?(scope, field) ? to_scope(scope).row_proc.db_schema[field.to_sym][:type] : nil end
Source
# File lib/datagrid/drivers/sequel.rb, line 100 def prefix_table_name(scope, field) scope_has_column?(scope, field) ? [to_scope(scope).row_proc.table_name, field].join(".") : field end