Commit 1556eb7cc7e14a9cd62e383ae3619cc013d2512b
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 = {}) |