groupdate 4.1.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e80d5888009185498959b5a739bc9a4517d45b801391a91cfcfc7a0f0b914b68
4
- data.tar.gz: 2a6b502d0526c534ca2ffdfbe28cf1fa1c394e3643c9a9546e1c288305022642
3
+ metadata.gz: 3bdc7848103a019e737a44e522ae42dcdb521c2ae136d9a52d1bafba795127d4
4
+ data.tar.gz: fccb9acee92d478d605ac8022e75173bccd4825ad5118a32d5aaaf3ef34c5349
5
5
  SHA512:
6
- metadata.gz: '0867e9d04c7cf962813e9ed6ce4c3e8e94f4e468b198ade9278dabe03d5ae6b2538190cb427f074ac469b1ed19edc094f741461b550a6629de99b82aeca592c5'
7
- data.tar.gz: 32244b184845925291bbc4cf399d0967413bd17456c9b534a9184f19e965654a8bad239a44d5b0555f7b63090d75e501ddaef449c83becfaf48d9ad136230ca0
6
+ metadata.gz: 9ad47038f6ec8193721ebc56509c1bda0feff36ecb65a7c08e63859592d55de1387e3e0fb907ac55c16329bf8c275265492ab45b6d7217643203d1c94419d324
7
+ data.tar.gz: c53eb19f798e162eef984cf6dc32b8be7b3b9e40008dfed445653fae618ae0d1db65e1420db6896f254f5c48daf49f3e97e163c5ed41958e75ad98c7d77590a0
@@ -1,3 +1,8 @@
1
+ ## 4.1.1
2
+
3
+ - Made column resolution consistent with `group`
4
+ - Added support for `alias_attribute`
5
+
1
6
  ## 4.1.0
2
7
 
3
8
  - Many performance improvements
@@ -8,7 +13,7 @@
8
13
  ## 4.0.2
9
14
 
10
15
  - Make `current` option work without `last`
11
- - Fixed default value for `maximum`, `minimum`, and `average`
16
+ - Fixed default value for `maximum`, `minimum`, and `average` (periods with no results now return `nil` instead of `0`, pass `default_value: 0` for previous behavior)
12
17
 
13
18
  ## 4.0.1
14
19
 
data/README.md CHANGED
@@ -48,7 +48,7 @@ and
48
48
  - day_of_month
49
49
  - month_of_year
50
50
 
51
- Use it anywhere you can use `group`. Works with `count`, `sum`, `minimum`, `maximum`, `average`, and [`median`](https://github.com/ankane/active_median).
51
+ Use it anywhere you can use `group`. Works with `count`, `sum`, `minimum`, `maximum`, and `average`. For `median`, check out [ActiveMedian](https://github.com/ankane/active_median). For other aggregate functions, including multiple together, check out [CalculateAll](https://github.com/codesnik/calculate-all).
52
52
 
53
53
  ### Time Zones
54
54
 
@@ -4,7 +4,7 @@ module Groupdate
4
4
 
5
5
  def initialize(relation, column:, period:, time_zone:, time_range:, week_start:, day_start:)
6
6
  @relation = relation
7
- @column = column
7
+ @column = resolve_column(relation, column)
8
8
  @period = period
9
9
  @time_zone = time_zone
10
10
  @time_range = time_range
@@ -173,5 +173,14 @@ module Groupdate
173
173
  ["#{column} IS NOT NULL"]
174
174
  end
175
175
  end
176
+
177
+ # resolves eagerly
178
+ # need to convert both where_clause (easy)
179
+ # and group_clause (not easy) if want to avoid this
180
+ def resolve_column(relation, column)
181
+ node = relation.send(:relation).send(:arel_columns, [column]).first
182
+ node = Arel::Nodes::SqlLiteral.new(node) if node.is_a?(String)
183
+ relation.connection.visitor.accept(node, Arel::Collectors::SQLString.new).value
184
+ end
176
185
  end
177
186
  end
@@ -176,7 +176,7 @@ module Groupdate
176
176
  last_step = series.last
177
177
  loop do
178
178
  next_step = last_step + step
179
- next_step = round_time(next_step) if next_step.hour != 0 # add condition to speed up
179
+ next_step = round_time(next_step) if next_step.hour != day_start # add condition to speed up
180
180
  break unless time_range.cover?(next_step)
181
181
 
182
182
  if next_step == last_step
@@ -1,3 +1,3 @@
1
1
  module Groupdate
2
- VERSION = "4.1.0"
2
+ VERSION = "4.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groupdate
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-05 00:00:00.000000000 Z
11
+ date: 2018-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -161,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
161
  version: '0'
162
162
  requirements: []
163
163
  rubyforge_project:
164
- rubygems_version: 2.7.7
164
+ rubygems_version: 2.7.6
165
165
  signing_key:
166
166
  specification_version: 4
167
167
  summary: The simplest way to group temporal data