Sha256: 3443972e65340327f87b47c29e5616879d4f56133e0a4f4a92ad2fc8e5340ef9

Contents?: true

Size: 1.12 KB

Versions: 17

Compression:

Stored size: 1.12 KB

Contents

module JSONAPIonify::Api
  class SortField
    delegate :to_s, :inspect, to: :to_h
    attr_reader :name, :order

    def initialize(name)
      @str = name.to_s
      if name.to_s.start_with? '-'
        @name  = name.to_s[1..-1].to_sym
        @order = :desc
      else
        @name  = name.to_sym
        @order = :asc
      end
      freeze
    end

    def ==(other)
      other.class == self.class &&
        other.name == self.name
    end

    def ===(other)
      other.class == self.class &&
        other.name == self.name
    end

    def id?
      name == :id
    end

    def contains_operator
      case @order
      when :asc
        :>=
      when :desc
        :<=
      end
    end

    def contains_arel
      case @order
      when :asc
        :gteq
      when :desc
        :lteq
      end
    end

    def outside_operator
      case @order
      when :asc
        :>
      when :desc
        :<
      end
    end

    def outside_arel
      case @order
      when :asc
        :gt
      when :desc
        :lt
      end
    end

    def to_s
      @str
    end

    def to_h
      { name => order }
    end

  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
jsonapionify-0.12.10 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.9 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.8 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.7 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.5 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.4 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.3 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.2 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.1 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.12.0 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.11 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.10 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.9 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.8 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.7 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.6 lib/jsonapionify/api/sort_field.rb
jsonapionify-0.11.5 lib/jsonapionify/api/sort_field.rb