gatoroid 0.2.2 → 0.2.3
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.
- data/VERSION +1 -1
- data/gatoroid.gemspec +2 -2
- data/lib/gator/gatorer.rb +21 -8
- data/lib/gator/javascript/functions.yml +12 -12
- data/lib/gator/readers.rb +31 -23
- metadata +14 -14
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/gatoroid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gatoroid"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kevin Haight"]
|
12
|
-
s.date = "2012-06-
|
12
|
+
s.date = "2012-06-08"
|
13
13
|
s.description = "Gatoroid is a way to store analytics using the poweful features of MongoDB for scalability"
|
14
14
|
s.email = "kevinjhaight@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/gator/gatorer.rb
CHANGED
@@ -25,9 +25,9 @@ module Mongoid #:nodoc:
|
|
25
25
|
end
|
26
26
|
|
27
27
|
# Get collections for
|
28
|
-
def collection_for(date,grain,
|
28
|
+
def collection_for(date,grain,off_set,opts={})
|
29
29
|
unless date.nil?
|
30
|
-
return @object.collection.group(:keyf => create_fkey(grain),
|
30
|
+
return @object.collection.group(:keyf => create_fkey(grain,off_set),
|
31
31
|
:reduce => "function(obj,prev){for (var key in obj.#{@for}) {prev.#{@for} += obj.#{@for}}}",
|
32
32
|
:cond=>create_query_hash(date,grain,opts),
|
33
33
|
:initial => {@for => 0})
|
@@ -45,23 +45,36 @@ module Mongoid #:nodoc:
|
|
45
45
|
end
|
46
46
|
case level
|
47
47
|
when HOUR
|
48
|
-
return sdate.change(:sec=>0), edate.change(:sec=>0)
|
48
|
+
return sdate.change(:sec=>0), edate.change(:sec=>0) + 1.hour
|
49
49
|
when DAY
|
50
|
-
return sdate.change(:hour=>0).change(:sec=>0), edate.change(:hour=>
|
50
|
+
return sdate.change(:hour=>0).change(:sec=>0), edate.change(:hour=>0).change(:sec=>0) + 1.day
|
51
51
|
when MONTH
|
52
52
|
return sdate.change(:day=>1).change(:hour=>0).change(:sec=>0), edate.change(:day=>1).change(:hour=>0).change(:sec=>0) + 1.month
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
# Create fkey
|
57
|
-
def create_fkey(grain)
|
57
|
+
def create_fkey(grain,off_set)
|
58
58
|
case grain
|
59
59
|
when HOUR
|
60
60
|
fkey = Javascript.aggregate_hour
|
61
61
|
when MONTH
|
62
|
-
fkey =
|
62
|
+
fkey = "function(doc) {
|
63
|
+
off_set = #{off_set} * 1000;
|
64
|
+
dd = new Date((doc.date + #{off_set})* 1000);
|
65
|
+
utc_date = parseInt((Date.parse((dd.getUTCMonth() + 1) + '/' + '01' + '/' + dd.getUTCFullYear()) / 1000)/86400)*86400;
|
66
|
+
out = (utc_date - #{off_set});
|
67
|
+
return {date: out.toFixed(0)};
|
68
|
+
}"
|
69
|
+
|
63
70
|
else # DEFAULT TO DAY
|
64
|
-
|
71
|
+
fkey = "function(doc) {
|
72
|
+
off_set = #{off_set} * 1000;
|
73
|
+
dd = new Date((doc.date + #{off_set})* 1000);
|
74
|
+
utc_date = parseInt((Date.parse((dd.getUTCMonth() + 1) + '/' + dd.getUTCDate() + '/' + dd.getUTCFullYear()) / 1000)/86400)*86400;
|
75
|
+
out = (utc_date - #{off_set});
|
76
|
+
return {date: out.toFixed(0)};
|
77
|
+
}"
|
65
78
|
end
|
66
79
|
return fkey
|
67
80
|
end
|
@@ -201,4 +214,4 @@ module Mongoid #:nodoc:
|
|
201
214
|
|
202
215
|
end
|
203
216
|
end
|
204
|
-
end
|
217
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
aggregate_hour:
|
2
|
-
"function(doc) {
|
3
|
-
d = new Date(doc.date* 1000);
|
4
|
-
return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' ' + d.getHours() + ':00:00') / 1000).toFixed(0)};
|
2
|
+
"function(doc) {
|
3
|
+
d = new Date(doc.date* 1000);
|
4
|
+
return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' ' + d.getHours() + ':00:00') / 1000).toFixed(0)};
|
5
5
|
}"
|
6
|
-
|
6
|
+
|
7
7
|
aggregate_day:
|
8
|
-
"function(doc) {
|
9
|
-
d = new Date(doc.date* 1000);
|
10
|
-
return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear()) / 1000).toFixed(0)};
|
8
|
+
"function(doc) {
|
9
|
+
d = new Date(doc.date* 1000);
|
10
|
+
return {date: (Date.parse((d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' 00::00') / 1000).toFixed(0)};
|
11
11
|
}"
|
12
|
-
|
12
|
+
|
13
13
|
aggregate_month:
|
14
|
-
"function(doc) {
|
15
|
-
d = new Date(doc.date* 1000);
|
16
|
-
return {date: (Date.parse((d.getMonth() + 1) + '/1/' + d.getFullYear()) / 1000).toFixed(0)};
|
17
|
-
}
|
14
|
+
"function(doc) {
|
15
|
+
d = new Date(doc.date* 1000);
|
16
|
+
return {date: (Date.parse((d.getMonth() + 1) + '/1/' + d.getFullYear()) / 1000).toFixed(0)};
|
17
|
+
}
|
data/lib/gator/readers.rb
CHANGED
@@ -7,15 +7,15 @@ module Mongoid #:nodoc:
|
|
7
7
|
DAY = "DAY"
|
8
8
|
MONTH = "MONTH"
|
9
9
|
DEFAULT_GRAIN = DAY
|
10
|
-
|
10
|
+
|
11
11
|
# Today - Gets total for today on DAY level
|
12
12
|
def today(opts={})
|
13
|
-
total_for(Time.now, DEFAULT_GRAIN, opts).to_i
|
13
|
+
total_for(Time.zone.now, DEFAULT_GRAIN, opts).to_i
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
# Yesterday - Gets total for tomorrow on DAY level
|
17
17
|
def yesterday(opts={})
|
18
|
-
total_for(Time.now - 1.day, DEFAULT_GRAIN,opts).to_i
|
18
|
+
total_for(Time.zone.now - 1.day, DEFAULT_GRAIN,opts).to_i
|
19
19
|
end
|
20
20
|
|
21
21
|
# On - Gets total for a specified day on DAY level
|
@@ -25,31 +25,40 @@ module Mongoid #:nodoc:
|
|
25
25
|
|
26
26
|
# Range - retuns a collection for a specified range on specified level
|
27
27
|
def range(date, grain=DEFAULT_GRAIN, opts={})
|
28
|
-
|
28
|
+
# Get Offset
|
29
|
+
if date.is_a?(Range)
|
30
|
+
off_set = date.first.utc_offset
|
31
|
+
else
|
32
|
+
off_set = date.utc_offset
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
data = collection_for(date,grain,off_set,opts)
|
37
|
+
|
29
38
|
# Add Zero values for dates missing
|
30
39
|
# May want to look into a way to get mongo to do this
|
31
40
|
if date.is_a?(Range)
|
32
41
|
start_date = date.first
|
33
42
|
end_date = date.last
|
34
|
-
|
43
|
+
|
35
44
|
case grain
|
36
45
|
when HOUR
|
37
|
-
start_date
|
38
|
-
end_date
|
46
|
+
start_date.change(:sec=>0)
|
47
|
+
end_date.change(:sec=>0)
|
39
48
|
when DAY
|
40
|
-
start_date
|
41
|
-
end_date
|
49
|
+
start_date.change(:hour=>0).change(:sec=>0)
|
50
|
+
end_date.change(:hour=>0).change(:sec=>0)
|
42
51
|
when MONTH
|
43
|
-
start_date
|
44
|
-
end_date
|
52
|
+
start_date.change(:day=>1).change(:hour=>0).change(:sec=>0)
|
53
|
+
end_date.change(:day=>1).change(:hour=>0).change(:sec=>0)
|
45
54
|
end
|
46
|
-
|
47
|
-
|
55
|
+
|
48
56
|
while start_date <= end_date
|
49
57
|
if data.select{|item| item['date'].to_i == start_date.to_i}.first.nil?
|
50
|
-
|
51
|
-
|
52
|
-
|
58
|
+
data << {"date" => "#{start_date.to_i}", @for => 0}
|
59
|
+
end
|
60
|
+
|
61
|
+
case grain
|
53
62
|
when HOUR
|
54
63
|
start_date = start_date + 1.hour
|
55
64
|
when DAY
|
@@ -57,13 +66,12 @@ module Mongoid #:nodoc:
|
|
57
66
|
when MONTH
|
58
67
|
start_date = start_date + 1.month
|
59
68
|
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
69
|
+
end
|
70
|
+
end
|
71
|
+
# Sort by date
|
72
|
+
data = data.sort_by { |hsh| hsh["date"] }
|
73
|
+
return data
|
65
74
|
end
|
66
|
-
|
67
75
|
end
|
68
76
|
end
|
69
77
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gatoroid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156222560 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156222560
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156222060 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156222060
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156221520 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156221520
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156220960 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.2.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156220960
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156220440 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156220440
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bson_ext
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156219800 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156219800
|
80
80
|
description: Gatoroid is a way to store analytics using the poweful features of MongoDB
|
81
81
|
for scalability
|
82
82
|
email: kevinjhaight@gmail.com
|