rollups 0.1.0 → 0.1.4

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: ac85a23af0477ab8ce7abed983995b06a935f82c2836fc0a63ff1fe4b150b9d7
4
- data.tar.gz: bb60e3c7c87e22e68a4ba94652e011031292ce879d60824f745d7f808055684c
3
+ metadata.gz: eb7a00e9ed34a6924e0d6ea7c27fbe96275817274abcc5e0aed4c03edf38f9b2
4
+ data.tar.gz: cb52591ce2a2f40c173bb925659a7b31812522dd2c81c0906ad2aff80b03f000
5
5
  SHA512:
6
- metadata.gz: abee36f374c42202b8a13919ff863aef511af7c28258eb5f657b0b00de4d8f9d329d53d1f58768377372eae428c09b7f223fbcdeb2b7a43a87339fbe3d9f3e9e
7
- data.tar.gz: 452951f5d6a8fda80288650b7061e0e17ab9bfd76a2638a7f529b4919ec2933fb725b07e6f85392665fd4e44b69790eed1d69b88341122aa8338640e4b45c868
6
+ metadata.gz: a7a044a8e1b85c51de0043e48381037adb080bded3dbd620fc1dec3715c8cf735a94778470672b269a66e31c764889dbc2d58f02dee7cb542eb739496d36d4c2
7
+ data.tar.gz: b66ea1e6f81de6bce70d947c816aee005363cdea4e61a1a98cdf4b83714f8b8c814bcba29806436589d6e5ee820f8704267944359341aa20afd84ceda215fb65
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## 0.1.4 (2021-12-15)
2
+
3
+ - Fixed warning with Active Record 7
4
+
5
+ ## 0.1.3 (2021-10-20)
6
+
7
+ - Fixed issue rolling up rollups
8
+
9
+ ## 0.1.2 (2021-06-07)
10
+
11
+ - Fixed deprecation warning with Active Record 6.1
12
+
13
+ ## 0.1.1 (2020-09-09)
14
+
15
+ - Fixed results for earlier versions of MySQL
16
+
1
17
  ## 0.1.0 (2020-09-07)
2
18
 
3
19
  - First release
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2020 Andrew Kane
3
+ Copyright (c) 2020-2021 Andrew Kane
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  Works great with [Ahoy](https://github.com/ankane/ahoy) and [Searchjoy](https://github.com/ankane/searchjoy)
6
6
 
7
+ [![Build Status](https://github.com/ankane/rollup/workflows/build/badge.svg?branch=master)](https://github.com/ankane/rollup/actions)
8
+
7
9
  ## Installation
8
10
 
9
11
  Add this line to your application’s Gemfile:
@@ -12,7 +12,7 @@ class RollupsGenerator < Rails::Generators::Base
12
12
  end
13
13
 
14
14
  def migration_source
15
- case ActiveRecord::Base.connection_config[:adapter].to_s
15
+ case adapter
16
16
  when /postg/i
17
17
  "dimensions.rb"
18
18
  else
@@ -23,4 +23,12 @@ class RollupsGenerator < Rails::Generators::Base
23
23
  def migration_version
24
24
  "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
25
25
  end
26
+
27
+ def adapter
28
+ if ActiveRecord::VERSION::STRING.to_f >= 6.1
29
+ ActiveRecord::Base.connection_db_config.adapter.to_s
30
+ else
31
+ ActiveRecord::Base.connection_config[:adapter].to_s
32
+ end
33
+ end
26
34
  end
@@ -35,12 +35,14 @@ class Rollup
35
35
  def perform_group(name, column:, interval:, time_zone:, current:, last:, clear:)
36
36
  raise ArgumentError, "Cannot use last and clear together" if last && clear
37
37
 
38
+ time_zone ||= Rollup.time_zone
39
+
38
40
  gd_options = {
39
41
  current: current
40
42
  }
41
43
 
42
44
  # make sure Groupdate global options aren't applied
43
- gd_options[:time_zone] = time_zone || Rollup.time_zone
45
+ gd_options[:time_zone] = time_zone
44
46
  gd_options[:week_start] = Rollup.week_start if interval.to_s == "week"
45
47
  gd_options[:day_start] = 0 if Utils.date_interval?(interval)
46
48
 
@@ -49,8 +51,14 @@ class Rollup
49
51
  elsif !clear
50
52
  # if no rollups, compute all intervals
51
53
  # if rollups, recompute last interval
52
- max_time = Rollup.where(name: name, interval: interval).maximum(Utils.time_sql(interval))
54
+ max_time = Rollup.unscoped.where(name: name, interval: interval).maximum(Utils.time_sql(interval))
53
55
  if max_time
56
+ # for MySQL on Ubuntu 18.04 (and likely other platforms)
57
+ if max_time.is_a?(String)
58
+ utc = ActiveSupport::TimeZone["Etc/UTC"]
59
+ max_time = Utils.date_interval?(interval) ? max_time.to_date : utc.parse(max_time).in_time_zone(time_zone)
60
+ end
61
+
54
62
  # aligns perfectly if time zone doesn't change
55
63
  # if time zone does change, there are other problems besides this
56
64
  gd_options[:range] = max_time..
@@ -149,7 +157,7 @@ class Rollup
149
157
  def maybe_clear(clear, name, interval)
150
158
  if clear
151
159
  Rollup.transaction do
152
- Rollup.where(name: name, interval: interval).delete_all
160
+ Rollup.unscoped.where(name: name, interval: interval).delete_all
153
161
  yield
154
162
  end
155
163
  else
@@ -165,10 +173,10 @@ class Rollup
165
173
 
166
174
  if ActiveRecord::VERSION::MAJOR >= 6
167
175
  options = Utils.mysql? ? {} : {unique_by: conflict_target}
168
- Rollup.upsert_all(records, **options)
176
+ Rollup.unscoped.upsert_all(records, **options)
169
177
  else
170
178
  update = Utils.mysql? ? [:value] : {columns: [:value], conflict_target: conflict_target}
171
- Rollup.import(records,
179
+ Rollup.unscoped.import(records,
172
180
  on_duplicate_key_update: update,
173
181
  validate: false
174
182
  )
@@ -1,5 +1,5 @@
1
1
  class Rollup
2
2
  # not used in gemspec to avoid superclass mismatch
3
3
  # be sure to update there as well
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.4"
5
5
  end
data/lib/rollup.rb CHANGED
@@ -75,10 +75,7 @@ class Rollup < ActiveRecord::Base
75
75
  # feels cleaner than overriding _read_attribute
76
76
  def inspect
77
77
  if Utils.date_interval?(interval)
78
- previous_time = time_before_type_cast
79
- previous_time = previous_time.to_s(:db) if previous_time.is_a?(Time)
80
- previous_time = previous_time + " 00:00:00" if previous_time.length == 10
81
- super.sub("time: \"#{previous_time}\"", "time: \"#{time.to_s(:db)}\"")
78
+ super.sub(/time: "[^"]+"/, "time: \"#{time.to_formatted_s(:db)}\"")
82
79
  else
83
80
  super
84
81
  end
data/lib/rollups.rb CHANGED
@@ -8,6 +8,7 @@ ActiveSupport.on_load(:active_record) do
8
8
 
9
9
  require "rollup/model"
10
10
  extend Rollup::Model
11
+ Rollup.rollup_column = :time
11
12
 
12
13
  # modules
13
14
  require "rollup/aggregator"
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.1.0
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-07 00:00:00.000000000 Z
11
+ date: 2021-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,106 +38,8 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5.2'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: minitest
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '5'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '5'
83
- - !ruby/object:Gem::Dependency
84
- name: activerecord
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: pg
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: mysql2
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: sqlite3
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- description:
140
- email: andrew@chartkick.com
41
+ description:
42
+ email: andrew@ankane.org
141
43
  executables: []
142
44
  extensions: []
143
45
  extra_rdoc_files: []
@@ -158,7 +60,7 @@ homepage: https://github.com/ankane/rollup
158
60
  licenses:
159
61
  - MIT
160
62
  metadata: {}
161
- post_install_message:
63
+ post_install_message:
162
64
  rdoc_options: []
163
65
  require_paths:
164
66
  - lib
@@ -173,8 +75,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
75
  - !ruby/object:Gem::Version
174
76
  version: '0'
175
77
  requirements: []
176
- rubygems_version: 3.1.2
177
- signing_key:
78
+ rubygems_version: 3.2.32
79
+ signing_key:
178
80
  specification_version: 4
179
81
  summary: Rollup time-series data in Rails
180
82
  test_files: []