Sha256: e7360366208525ef9c8d05d0f11c99853c3744ac847d8f3cbb661cd531a50d90

Contents?: true

Size: 1.28 KB

Versions: 13

Compression:

Stored size: 1.28 KB

Contents

require 'ardm/support/equalizer'
module Ardm
  module Query
    class Operator
      extend Ardm::Equalizer

      OPERATORS = {
        # DM      => ARel
        :eql      => :eq,
        :not      => :not_eq,
        :in       => :in,
        :gt       => :gt,
        :gte      => :gteq,
        :lt       => :lt,
        :lte      => :lteq,
        :like     => :matches,
        :not_like => :does_not_match,
        :regexp   => :regexp,
      }

      ORDERS = {
        :asc  => :asc,
        :desc => :desc,
      }

      ALL = OPERATORS.merge(ORDERS)

      equalize :target, :operator

      # @api private
      attr_reader :target

      # @api private
      attr_reader :operator

      # @api private
      def inspect
        "#<#{self.class.name} #{target.inspect}.#{operator.inspect}>"
      end

      FOR_ARRAY = {
        :eq     => :in,
        :not_eq => :not_in
      }.freeze

      def for_array
        FOR_ARRAY[operator]
      end

      def to_arel(relation, value)
        Ardm::Query::Expression.new(relation, target, self, value)
      end

      private

      # @api private
      def initialize(target, operator)
        @target, @operator = target, operator.to_sym
      end
    end # class Operator
  end # module Query
end # module Ardm

require 'ardm/query/ext/symbol'

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ardm-0.4.0.ar427 lib/ardm/query/operator.rb
ardm-0.4.0 lib/ardm/query/operator.rb
ardm-0.3.2 lib/ardm/query/operator.rb
ardm-0.3.1 lib/ardm/query/operator.rb
ardm-0.3.0 lib/ardm/query/operator.rb
ardm-0.2.7 lib/ardm/query/operator.rb
ardm-0.2.6 lib/ardm/query/operator.rb
ardm-0.2.5 lib/ardm/query/operator.rb
ardm-0.2.4 lib/ardm/query/operator.rb
ardm-0.2.3 lib/ardm/query/operator.rb
ardm-0.2.2 lib/ardm/query/operator.rb
ardm-0.2.1 lib/ardm/query/operator.rb
ardm-0.2.0 lib/ardm/query/operator.rb