Commit 1556eb7cc7e14a9cd62e383ae3619cc013d2512b

Authored by Andrew Kane
1 parent c05e10b1
Exists in select

Added select option

Showing 2 changed files with 16 additions and 2 deletions   Show diff stats
lib/groupdate/magic.rb
@@ -87,8 +87,11 @@ module Groupdate @@ -87,8 +87,11 @@ module Groupdate
87 raise "Connection adapter not supported: #{adapter_name}" 87 raise "Connection adapter not supported: #{adapter_name}"
88 end 88 end
89 89
90 - group = relation.group(Groupdate::OrderHack.new(relation.send(:sanitize_sql_array, query), field, time_zone))  
91 - if options[:series] == false 90 + group_query = relation.send(:sanitize_sql_array, query)
  91 + group = relation.group(Groupdate::OrderHack.new(group_query, field, time_zone))
  92 + if options[:select]
  93 + group.select(options[:select] + ", #{group_query} AS #{field}")
  94 + elsif options[:series] == false
92 group 95 group
93 else 96 else
94 relation = 97 relation =
test/test_helper.rb
@@ -772,6 +772,17 @@ module TestGroupdate @@ -772,6 +772,17 @@ module TestGroupdate
772 assert_equal expected, User.group_by_day(:created_at, time_zone: "Brasilia").count 772 assert_equal expected, User.group_by_day(:created_at, time_zone: "Brasilia").count
773 end 773 end
774 774
  775 + # select
  776 +
  777 + def test_select
  778 + create_user("2014-10-19 00:00:00")
  779 + create_user("2014-10-19 00:00:00", 2)
  780 + result = User.group_by_day(:created_at, select: "COUNT(*) AS count, SUM(score) AS sum").to_a.first
  781 + assert_equal 2, result.count
  782 + assert_equal 3, result.sum
  783 + assert_equal utc.parse("2014-10-19 00:00:00"), result.day
  784 + end
  785 +
775 # helpers 786 # helpers
776 787
777 def assert_format(method, expected, format, options = {}) 788 def assert_format(method, expected, format, options = {})