module OrderQuery::NullsDirection
Handles nulls :first and :last direction.
Constants
- DIRECTIONS
Public Instance Methods
all()
click to toggle source
# File lib/order_query/nulls_direction.rb, line 10 def all DIRECTIONS end
connection_adapter(scope)
click to toggle source
# File lib/order_query/nulls_direction.rb, line 44 def connection_adapter(scope) if scope.respond_to?(:connection_db_config) # Rails >= 6.1.0 scope.connection_db_config.adapter else scope.connection_config[:adapter] end end
default(scope, dir)
click to toggle source
@param scope [ActiveRecord::Relation] @param dir [:asc, :desc] @return [:first, :last] the default nulls order, based on the given
scope's connection adapter name.
# File lib/order_query/nulls_direction.rb, line 34 def default(scope, dir) case connection_adapter(scope) when /mysql|maria|sqlite|sqlserver/i (dir == :asc ? :first : :last) else # Oracle, Postgres (dir == :asc ? :last : :first) end end
parse!(direction)
click to toggle source
@param [:first, :last] direction @raise [ArgumentError] @return [:first, :last]
# File lib/order_query/nulls_direction.rb, line 23 def parse!(direction) all.include?(direction) && direction or fail ArgumentError, "`nulls` must be in #{all.map(&:inspect).join(', ')}, "\ "is #{direction.inspect}" end
reverse(direction)
click to toggle source
@param [:first, :last] direction @return [:first, :last]
# File lib/order_query/nulls_direction.rb, line 16 def reverse(direction) all[(all.index(direction) + 1) % 2].to_sym end