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 | 87 | raise "Connection adapter not supported: #{adapter_name}" |
88 | 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 | 95 | group |
93 | 96 | else |
94 | 97 | relation = | ... | ... |
test/test_helper.rb
... | ... | @@ -772,6 +772,17 @@ module TestGroupdate |
772 | 772 | assert_equal expected, User.group_by_day(:created_at, time_zone: "Brasilia").count |
773 | 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 | 786 | # helpers |
776 | 787 | |
777 | 788 | def assert_format(method, expected, format, options = {}) | ... | ... |