gatoroid 0.2.16 → 0.2.17
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 +24 -2
- data/spec/gatoroid_spec.rb +2 -1
- metadata +16 -16
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.17
|
data/gatoroid.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gatoroid"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.17"
|
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
12
|
s.date = "2014-07-25"
|
13
|
-
s.description = "Gatoroid is a way to store analytics using the poweful features of MongoDB for scalability
|
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 = [
|
16
16
|
"LICENSE",
|
data/lib/gator/gatorer.rb
CHANGED
@@ -27,9 +27,10 @@ module Mongoid #:nodoc:
|
|
27
27
|
# Get collections for
|
28
28
|
def collection_for(date,grain,opts={})
|
29
29
|
unless date.nil?
|
30
|
+
|
30
31
|
return @object.collection.group(:keyf => create_fkey(grain,0),
|
31
32
|
:reduce => "function(obj,prev){prev.#{@for} += obj.#{@for}}",
|
32
|
-
:cond=>
|
33
|
+
:cond=>create_query_hash_field(date,grain,@for,opts),
|
33
34
|
:initial => {@for => 0})
|
34
35
|
end
|
35
36
|
end
|
@@ -39,7 +40,7 @@ module Mongoid #:nodoc:
|
|
39
40
|
unless date.nil?
|
40
41
|
return @object.collection.group(:key => create_group_key_hash,
|
41
42
|
:reduce => "function(obj,prev){prev.#{@for} += obj.#{@for}}",
|
42
|
-
:cond=>
|
43
|
+
:cond=>create_query_hash_field(date,grain,@for,opts),
|
43
44
|
:initial => {@for => 0})
|
44
45
|
end
|
45
46
|
end
|
@@ -188,6 +189,27 @@ module Mongoid #:nodoc:
|
|
188
189
|
return key_hash
|
189
190
|
end
|
190
191
|
|
192
|
+
# Create Query Hash
|
193
|
+
def create_query_hash_field(date = Time.now, grain, key_field, opts)
|
194
|
+
key_hash = Hash.new { |hash, key| hash[key] = [] }
|
195
|
+
# Set Keys
|
196
|
+
if !opts.empty?
|
197
|
+
@object.gator_keys.each do | gk |
|
198
|
+
raise Errors::ModelNotSaved, "Missing key value #{gk}" if opts[gk].nil?
|
199
|
+
if opts[gk].kind_of?(Array)
|
200
|
+
key_hash[gk] = {"$in" => opts[gk]}
|
201
|
+
else
|
202
|
+
key_hash[gk] = opts[gk]
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
sdate,edate = convert_date_by_level(date,grain) # Set Dates
|
208
|
+
key_hash[:date] = {"$gte" => normalize_date(sdate), "$lt" => normalize_date(edate)}
|
209
|
+
key_hash[key_field] = {"$ne" => nil}
|
210
|
+
return key_hash
|
211
|
+
end
|
212
|
+
|
191
213
|
# Normalize Dates
|
192
214
|
def normalize_date(date)
|
193
215
|
case date
|
data/spec/gatoroid_spec.rb
CHANGED
@@ -125,7 +125,8 @@ describe Mongoid::Gator do
|
|
125
125
|
@obj.visits.range(Time.zone.now..Time.zone.now + 365.day,Mongoid::Gator::Readers::DAY, :siteid=>100).should have(366).record
|
126
126
|
end
|
127
127
|
|
128
|
-
it "should have 1 record using range method for today and yesterday at hour grain" do
|
128
|
+
it "should have 1 record using range method for today and yesterday at hour grain", :nantest => true do
|
129
|
+
@obj.visits.range(Time.now.change(:hour=>0).change(:sec=>0)..Time.now.change(:hour=>0).change(:sec=>0) + 1.day,Mongoid::Gator::Readers::HOUR, :siteid=>100).inspect
|
129
130
|
@obj.visits.range(Time.now.change(:hour=>0).change(:sec=>0)..Time.now.change(:hour=>0).change(:sec=>0) + 1.day,Mongoid::Gator::Readers::HOUR, :siteid=>100).should have(24).record
|
130
131
|
end
|
131
132
|
|
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.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2014-07-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &70209373753160 !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: *70209373753160
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70209373752540 !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: *70209373752540
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &70209373751840 !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: *70209373751840
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70209373751260 !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: *70209373751260
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &70209373750480 !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: *70209373750480
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bson_ext
|
71
|
-
requirement: &
|
71
|
+
requirement: &70209373749800 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70209373749800
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: database_cleaner
|
82
|
-
requirement: &
|
82
|
+
requirement: &70209373749160 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - =
|
@@ -87,9 +87,9 @@ dependencies:
|
|
87
87
|
version: 0.8.0
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70209373749160
|
91
91
|
description: Gatoroid is a way to store analytics using the poweful features of MongoDB
|
92
|
-
for scalability
|
92
|
+
for scalability
|
93
93
|
email: kevinjhaight@gmail.com
|
94
94
|
executables: []
|
95
95
|
extensions: []
|