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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/trifle/stats/driver/sqlite.rb +14 -5
- data/lib/trifle/stats/operations/timeseries/increment.rb +8 -1
- data/lib/trifle/stats/operations/timeseries/set.rb +8 -1
- data/lib/trifle/stats/operations/timeseries/values.rb +14 -1
- data/lib/trifle/stats/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 574331154d00b65ea5a994f7c7fbc754a1225c39617294acbeed3886c88d5b98
|
|
4
|
+
data.tar.gz: d4cca3dd912c0642594805395f727fcce350cee4cd6b388ddf09fb3032895317
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 423c591af0e2f61178be6553afef6ec4a52ab96268f30b82720e8bf591d079ece3b5b4753766f1ebeecffe442b92162ea89619a4aa7fa58298aee62b226f1cba
|
|
7
|
+
data.tar.gz: a1fdba88136d21091e95eb59b1b87fab7e917626e40860d5e7128f7771c0428547e2070ba98ae8a9cf5437ee5d61c7671745336226fc25c46492fd6aee1756f1
|
data/Gemfile.lock
CHANGED
|
@@ -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|
|
|
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(
|
|
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
|
data/lib/trifle/stats/version.rb
CHANGED