module Card::Query::SqlStatement::Order
build ORDER BY clause
Public Instance Methods
Source
# File lib/card/query/sql_statement/order.rb, line 19 def order full_syntax do dirs = order_directives "ORDER BY #{dirs.join ', '}" if dirs.present? end end
Source
# File lib/card/query/sql_statement/order.rb, line 51 def order_as field = yield return field unless (as = @mods[:sort_as]) "CAST(#{field} AS #{cast_type(safe_sql(as))})" end
Source
# File lib/card/query/sql_statement/order.rb, line 58 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 Array.wrap(dir)[index] end end
Source
# File lib/card/query/sql_statement/order.rb, line 35 def order_directive order_key, index field = order_field order_key @fields += ", #{field}" "#{field} #{order_dir order_key, index}" end
Source
# File lib/card/query/sql_statement/order.rb, line 26 def order_directives sort_mod = @mods[:sort_by] || @mods[:sort] return if sort_mod.blank? Array.wrap(sort_mod).map.with_index do |order_key, index| order_directive order_key, index end end
Source
# File lib/card/query/sql_statement/order.rb, line 41 def order_field order_key order_as do if (field = ORDER_MAP[order_key]) "#{@query.table_alias}.#{field}" else safe_sql order_key end end end