Module: Prato::Internal::Pipeline::Sorting

Extended by:
Sorting
Included in:
Sorting
Defined in:
lib/prato/internal/pipeline/sorting.rb

Instance Method Summary collapse

Instance Method Details

#sort_query(query_state, spec, raw_sorts) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/prato/internal/pipeline/sorting.rb', line 9

def sort_query(query_state, spec, raw_sorts)
  return query_state if raw_sorts.nil?

  sorts = Array(raw_sorts)

  any_ruby = sorts.any? { |s| spec.columns[s.field].is_a?(Types::RubyColumn) }

  if any_ruby || !query_state.unmaterialized?
    apply_ruby_sorts(query_state, spec, sorts)
  else
    apply_sql_sorts(query_state, spec, sorts)
  end
end