trifle-stats 2.4.0 → 2.4.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: a7f3833c65dc5e0a762b93c6489280be068ed5d8e5309860ec8a5827018e287b
4
- data.tar.gz: f019c55266e3b283da326a49861cf51cf1e85f3a7fac287b102dfb8e4eb7f9a2
3
+ metadata.gz: 574331154d00b65ea5a994f7c7fbc754a1225c39617294acbeed3886c88d5b98
4
+ data.tar.gz: d4cca3dd912c0642594805395f727fcce350cee4cd6b388ddf09fb3032895317
5
5
  SHA512:
6
- metadata.gz: c7a67031c4a61531f81bca6bcff2b5726628eb95d8c4ff03ef49721f052cdeaaadd5b438a5670a5c55d070afc7af320597075d511f38d9b4eaa27d33f76b8dda
7
- data.tar.gz: 0352b77fd921945ce1bb96d815117fbb838f6aafcdd63405bf9ce3a0afcceaf04753dd42f7a3f93e60052c329a86752fce7688820adc70599006977485f922eb
6
+ metadata.gz: 423c591af0e2f61178be6553afef6ec4a52ab96268f30b82720e8bf591d079ece3b5b4753766f1ebeecffe442b92162ea89619a4aa7fa58298aee62b226f1cba
7
+ data.tar.gz: a1fdba88136d21091e95eb59b1b87fab7e917626e40860d5e7128f7771c0428547e2070ba98ae8a9cf5437ee5d61c7671745336226fc25c46492fd6aee1756f1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trifle-stats (2.4.0)
4
+ trifle-stats (2.4.1)
5
5
  tzinfo (~> 2.0)
6
6
 
7
7
  GEM
@@ -137,7 +137,7 @@ module Trifle
137
137
 
138
138
  def get_query(identifiers:)
139
139
  conditions = identifiers.map do |identifier|
140
- identifier.map { |k, v| "#{k} = #{format_value(v)}" }.join(' AND ')
140
+ identifier.map { |k, v| build_field_condition(k, v) }.join(' AND ')
141
141
  end.join(' OR ')
142
142
 
143
143
  <<-SQL
@@ -193,6 +193,15 @@ module Trifle
193
193
 
194
194
  private
195
195
 
196
+ def build_field_condition(key, value)
197
+ return "#{key} = #{format_value(value)}" unless key == :at
198
+
199
+ formatted = format_time_value(value)
200
+ with_microseconds = formatted.sub('Z', '.000000Z')
201
+
202
+ "(at = '#{formatted}' OR at = '#{with_microseconds}')"
203
+ end
204
+
196
205
  # Batch data operations to avoid SQLite parser stack overflow
197
206
  # Splits large data hashes into smaller chunks to prevent too many nested json_set calls
198
207
  def batch_data_operations(identifier:, data:, connection:, operation:)
@@ -215,13 +224,13 @@ module Trifle
215
224
  def format_time_value(value)
216
225
  case value
217
226
  when Time
218
- value.getutc.iso8601
227
+ value.getutc.iso8601(0)
219
228
  when DateTime
220
- value.to_time.getutc.iso8601
229
+ value.to_time.getutc.iso8601(0)
221
230
  when Integer
222
- Time.at(value).getutc.iso8601
231
+ Time.at(value).getutc.iso8601(0)
223
232
  else
224
- Time.iso8601(value.to_s).getutc.iso8601
233
+ Time.iso8601(value.to_s).getutc.iso8601(0)
225
234
  end
226
235
  end
227
236
 
@@ -21,7 +21,7 @@ module Trifle
21
21
 
22
22
  def key_for(granularity:)
23
23
  pgrn = Nocturnal::Parser.new(granularity)
24
- at = Nocturnal.new(@at, config: config).floor(pgrn.offset, pgrn.unit)
24
+ at = Nocturnal.new(localized_time(@at), config: config).floor(pgrn.offset, pgrn.unit)
25
25
  Nocturnal::Key.new(key: key, granularity: granularity, at: at)
26
26
  end
27
27
 
@@ -41,6 +41,13 @@ module Trifle
41
41
  def tracking_key
42
42
  @untracked ? '__untracked__' : nil
43
43
  end
44
+
45
+ private
46
+
47
+ def localized_time(time)
48
+ base_time = time.is_a?(Time) ? time : time.to_time
49
+ config.tz.utc_to_local(base_time.getutc)
50
+ end
44
51
  end
45
52
  end
46
53
  end
@@ -21,7 +21,7 @@ module Trifle
21
21
 
22
22
  def key_for(granularity:)
23
23
  pgrn = Nocturnal::Parser.new(granularity)
24
- at = Nocturnal.new(@at, config: config).floor(pgrn.offset, pgrn.unit)
24
+ at = Nocturnal.new(localized_time(@at), config: config).floor(pgrn.offset, pgrn.unit)
25
25
  Nocturnal::Key.new(key: key, granularity: granularity, at: at)
26
26
  end
27
27
 
@@ -41,6 +41,13 @@ module Trifle
41
41
  def tracking_key
42
42
  @untracked ? '__untracked__' : nil
43
43
  end
44
+
45
+ private
46
+
47
+ def localized_time(time)
48
+ base_time = time.is_a?(Time) ? time : time.to_time
49
+ config.tz.utc_to_local(base_time.getutc)
50
+ end
44
51
  end
45
52
  end
46
53
  end
@@ -23,7 +23,13 @@ module Trifle
23
23
  def timeline
24
24
  @timeline ||= begin
25
25
  pgrn = Nocturnal::Parser.new(granularity)
26
- Nocturnal.timeline(from: @from, to: @to, offset: pgrn.offset, unit: pgrn.unit)
26
+ Nocturnal.timeline(
27
+ from: localized_time(@from),
28
+ to: localized_time(@to),
29
+ offset: pgrn.offset,
30
+ unit: pgrn.unit,
31
+ config: config
32
+ )
27
33
  end
28
34
  end
29
35
 
@@ -54,6 +60,13 @@ module Trifle
54
60
  def perform
55
61
  @skip_blanks ? clean_values : values
56
62
  end
63
+
64
+ private
65
+
66
+ def localized_time(time)
67
+ base_time = time.is_a?(Time) ? time : time.to_time
68
+ config.tz.utc_to_local(base_time.getutc)
69
+ end
57
70
  end
58
71
  end
59
72
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Trifle
4
4
  module Stats
5
- VERSION = '2.4.0'
5
+ VERSION = '2.4.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trifle-stats
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jozef Vaclavik