rollups 0.3.1 → 0.4.0
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -7
- data/lib/rollup/aggregator.rb +18 -5
- data/lib/rollup/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9e1a4c50bc160496a4bcc8f4709615dc7f030aa8ac69a02c2ff9ca7221adf94
|
4
|
+
data.tar.gz: 271271318f3cc86e79b561fbc0e3ac32160a12cb0a72dfa47de71435a3114a3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 277e0ee40c5f156904547fa3ad92a9faaadeda7c7291426d29b2eb69f5187f80c60a57d83f9a430461a954c02150e3a8f1012a6348dfa8a88d082c5d6c8ffc5a
|
7
|
+
data.tar.gz: 37b7ae3c133829ff04bbd06e04789ee94620b98ab3a1bc2c1f812da2cec44aeb2213631e8665c6d919735c8b856a5f548fc893e89874ec6da557e2710fac9f2a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.4.0 (2024-10-01)
|
2
|
+
|
3
|
+
- Added support for Active Record 8
|
4
|
+
- Dropped support for Ruby < 3.1 and Active Record < 7
|
5
|
+
|
6
|
+
## 0.3.2 (2024-02-09)
|
7
|
+
|
8
|
+
- Fixed incorrect rollups with `time_zone: false` when `Rollup.time_zone` has a negative UTC offset
|
9
|
+
|
1
10
|
## 0.3.1 (2023-09-20)
|
2
11
|
|
3
12
|
- Added support for Trilogy
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Works great with [Ahoy](https://github.com/ankane/ahoy) and [Searchjoy](https://github.com/ankane/searchjoy)
|
6
6
|
|
7
|
-
[](https://github.com/ankane/rollup/actions)
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -14,12 +14,6 @@ Add this line to your application’s Gemfile:
|
|
14
14
|
gem "rollups"
|
15
15
|
```
|
16
16
|
|
17
|
-
For Rails < 6, also add:
|
18
|
-
|
19
|
-
```ruby
|
20
|
-
gem "activerecord-import"
|
21
|
-
```
|
22
|
-
|
23
17
|
And run:
|
24
18
|
|
25
19
|
```sh
|
data/lib/rollup/aggregator.rb
CHANGED
@@ -29,7 +29,7 @@ class Rollup
|
|
29
29
|
def validate_column(column)
|
30
30
|
unless column.is_a?(Symbol) || column.is_a?(Arel::Nodes::SqlLiteral)
|
31
31
|
column = column.to_s
|
32
|
-
unless /\A\w+(\.\w+)?\z/i.match(column)
|
32
|
+
unless /\A\w+(\.\w+)?\z/i.match?(column)
|
33
33
|
raise ActiveRecord::UnknownAttributeReference, "Query method called with non-attribute argument(s): #{column.inspect}. Use Arel.sql() for known-safe values."
|
34
34
|
end
|
35
35
|
end
|
@@ -43,7 +43,7 @@ class Rollup
|
|
43
43
|
raise ArgumentError, "Cannot use range and current together" if range && !current.nil?
|
44
44
|
|
45
45
|
current = true if current.nil?
|
46
|
-
time_zone
|
46
|
+
time_zone = Rollup.time_zone if time_zone.nil?
|
47
47
|
|
48
48
|
gd_options = {
|
49
49
|
current: current
|
@@ -68,7 +68,14 @@ class Rollup
|
|
68
68
|
# for MySQL on Ubuntu 18.04 (and likely other platforms)
|
69
69
|
if max_time.is_a?(String)
|
70
70
|
utc = ActiveSupport::TimeZone["Etc/UTC"]
|
71
|
-
max_time =
|
71
|
+
max_time =
|
72
|
+
if Utils.date_interval?(interval)
|
73
|
+
max_time.to_date
|
74
|
+
else
|
75
|
+
t = utc.parse(max_time)
|
76
|
+
t = t.in_time_zone(time_zone) if time_zone
|
77
|
+
t
|
78
|
+
end
|
72
79
|
end
|
73
80
|
|
74
81
|
# aligns perfectly if time zone doesn't change
|
@@ -112,9 +119,9 @@ class Rollup
|
|
112
119
|
|
113
120
|
# removing starting and ending quotes
|
114
121
|
# for simplicity, they don't need to be the same
|
115
|
-
value = value[1..-2] if value.match(/\A["'`].+["'`]\z/)
|
122
|
+
value = value[1..-2] if value.match?(/\A["'`].+["'`]\z/)
|
116
123
|
|
117
|
-
unless value.match(/\A\w+\z/)
|
124
|
+
unless value.match?(/\A\w+\z/)
|
118
125
|
raise "Cannot determine dimension name: #{group}. Use the dimension_names option"
|
119
126
|
end
|
120
127
|
|
@@ -184,6 +191,12 @@ class Rollup
|
|
184
191
|
conflict_target << :dimensions if Utils.dimensions_supported?
|
185
192
|
|
186
193
|
options = Utils.mysql? ? {} : {unique_by: conflict_target}
|
194
|
+
if ActiveRecord::VERSION::MAJOR >= 8
|
195
|
+
utc = ActiveSupport::TimeZone["Etc/UTC"]
|
196
|
+
records.each do |v|
|
197
|
+
v[:time] = v[:time].in_time_zone(utc) if v[:time].is_a?(Date)
|
198
|
+
end
|
199
|
+
end
|
187
200
|
Rollup.unscoped.upsert_all(records, **options)
|
188
201
|
end
|
189
202
|
end
|
data/lib/rollup/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollups
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: groupdate
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,14 +68,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: '3'
|
71
|
+
version: '3.1'
|
72
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
|
-
rubygems_version: 3.
|
78
|
+
rubygems_version: 3.5.16
|
79
79
|
signing_key:
|
80
80
|
specification_version: 4
|
81
81
|
summary: Rollup time-series data in Rails
|