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