lib/card/query/sql_statement/order.rb in card-1.104.2 vs lib/card/query/sql_statement/order.rb in card-1.105.0
- old
+ new
@@ -1,10 +1,10 @@
class Card
module Query
# convert @query sort rep into order by statement
- # order information is stored in @mods[:sort], @mods[:sort_as], and
- # @mods[:dir]
+ # order information is stored in @mods[:sort_by], @mods[:sort_as], and
+ # @mods[:sort_dir]
class SqlStatement
ORDER_MAP = {
"id" => "id",
"update" => "updated_at",
"create" => "created_at",
@@ -22,21 +22,22 @@
"ORDER BY #{dirs.join ', '}" if dirs.present?
end
end
def order_directives
- return if @mods[:sort].blank?
+ sort_mod = @mods[:sort_by] || @mods[:sort]
+ return if sort_mod.blank?
- Array.wrap(@mods[:sort]).map do |order_key|
- order_directive order_key
+ Array.wrap(sort_mod).map.with_index do |order_key, index|
+ order_directive order_key, index
end
end
- def order_directive order_key
+ def order_directive order_key, index
field = order_field order_key
@fields += ", #{field}"
- "#{field} #{order_dir order_key}"
+ "#{field} #{order_dir order_key, index}"
end
def order_field order_key
order_as do
if (field = ORDER_MAP[order_key])
@@ -52,14 +53,15 @@
return field unless (as = @mods[:sort_as])
"CAST(#{field} AS #{cast_type(safe_sql(as))})"
end
- def order_dir order_key
- if @mods[:dir].blank?
+ def order_dir order_key, index
+ dir = @mods[:sort_dir] || @mods[:dir] # dir is DEPRECATED
+ if dir.blank?
DEFAULT_ORDER_DIRS[order_key.to_sym] || "asc"
else
- safe_sql @mods[:dir]
+ safe_sql Array.wrap(dir)[index]
end
end
end
end
end