Sha256: 02bd1d47f2e14e558dea10887cf85193568ba3edbadfe38cb68ff354b88f3288

Contents?: true

Size: 1.05 KB

Versions: 12

Compression:

Stored size: 1.05 KB

Contents

module CompositePrimaryKeys::ActiveRecord::QueryMethods

  def reverse_sql_order(order_query)
    # CPK
    # order_query = ["#{quoted_table_name}.#{quoted_primary_key} ASC"] if order_query.empty?

    # break apart CPKs
    order_query = primary_key.map do |key|
      "#{quoted_table_name}.#{connection.quote_column_name(key)} ASC"
    end if order_query.empty?

    order_query.map do |o|
      case o
      when Arel::Nodes::Ordering
        o.reverse
      when String, Symbol
        o.to_s.split(',').collect do |s|
          s.strip!
          s.gsub!(/\sasc\Z/i, ' DESC') || s.gsub!(/\sdesc\Z/i, ' ASC') || s.concat(' DESC')
        end
      else
        o
      end
    end.flatten
  end


  def order(*args)
    args.map! do |arg|
      if arg.is_a?(Arel::Nodes::Ordering) && arg.expr.name.is_a?(Array)
        arg = arg.expr.name.map do |key|
          cloned_node = arg.clone
          cloned_node.expr.name = key
          cloned_node
        end
      end
      arg
    end if composite?
    super(*args)
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
composite_primary_keys-8.1.8 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-8.1.7 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-8.1.6 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-8.1.5 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-9.0.4 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-9.0.2 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-9.0.1 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-8.1.4 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-9.0.0 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-9.0.0.beta1 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-8.1.3 lib/composite_primary_keys/relation/query_methods.rb
composite_primary_keys-8.1.2 lib/composite_primary_keys/relation/query_methods.rb