class Sorted::SQLQuery

Constants

REGEXP

Public Class Methods

encode(set, quote_proc = ->(f) { f } click to toggle source
# File lib/sorted/sql_query.rb, line 22
def self.encode(set, quote_proc = ->(f) { f })
  set.map do |a|
    encoded = "#{column(a[0], quote_proc)}"

    if sort_has_direction?(a)
      encoded += " #{a[1].upcase}"
      encoded += encode_nulls(a[2]) unless a[2].nil?
    else
      encoded += encode_nulls(a[1]) unless a[1].nil?
    end

    encoded
  end.join(', ')
end
parse(raw) click to toggle source
# File lib/sorted/sql_query.rb, line 14
def self.parse(raw)
  split(raw, /,/) do |set, part|
    m = part.match(REGEXP)
    next unless m
    set << parse_match(m)
  end
end

Private Class Methods

column(parts, quote_proc) click to toggle source
# File lib/sorted/sql_query.rb, line 47
def self.column(parts, quote_proc)
  parts.split('.').map { |frag| quote_proc.call(frag) }.join('.')
end
encode_nulls(raw_nulls) click to toggle source
# File lib/sorted/sql_query.rb, line 42
def self.encode_nulls(raw_nulls)
  " #{raw_nulls.upcase.tr('_', ' ')}"
end
sort_has_direction?(raw) click to toggle source
# File lib/sorted/sql_query.rb, line 37
def self.sort_has_direction?(raw)
  raw[1].match(/ASC|DESC/i) unless raw[1].nil?
end