mochigome 0.0.6 → 0.0.7
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/lib/mochigome_ver.rb +1 -1
- data/lib/query.rb +7 -3
- data/test/unit/query_test.rb +3 -0
- metadata +4 -4
data/lib/mochigome_ver.rb
CHANGED
data/lib/query.rb
CHANGED
@@ -30,8 +30,8 @@ module Mochigome
|
|
30
30
|
|
31
31
|
@aggregate_rels = {}
|
32
32
|
aggs_by_model.each do |focus_model, data_models|
|
33
|
-
# Need to do a relation over the entire path in case query
|
34
|
-
# on something other than the focus model layer.
|
33
|
+
# Need to do a relation over the entire path in case query has
|
34
|
+
# a condition on something other than the focus model layer.
|
35
35
|
# TODO: Would be better to only do this if necesssitated by the
|
36
36
|
# conditions supplied to the query when it is ran, and/or
|
37
37
|
# the access filter.
|
@@ -42,8 +42,9 @@ module Mochigome
|
|
42
42
|
f2d_path = self.class.path_thru([focus_model, data_model]) #TODO: Handle nil here
|
43
43
|
agg_path = nil
|
44
44
|
key_path = nil
|
45
|
-
f2d_path.
|
45
|
+
f2d_path.each do |link_model|
|
46
46
|
remainder = f2d_path.drop_while{|m| m != link_model}
|
47
|
+
next if (remainder.drop(1) & @layers_path).size > 0
|
47
48
|
if @layers_path.include?(link_model)
|
48
49
|
agg_path = remainder
|
49
50
|
key_path = @layers_path.take(@layers_path.index(focus_model)+1)
|
@@ -52,11 +53,14 @@ module Mochigome
|
|
52
53
|
# Route it from the closest layer model
|
53
54
|
@layers_path.each_with_index do |layer, i|
|
54
55
|
p = self.class.path_thru([layer, link_model]) + remainder.drop(1)
|
56
|
+
next if (p.drop(1) & @layers_path).size > 0
|
57
|
+
next if p.uniq.size != p.size
|
55
58
|
if agg_path.nil? || p.size <= agg_path.size
|
56
59
|
agg_path = p
|
57
60
|
key_path = @layers_path.take(i+1)
|
58
61
|
end
|
59
62
|
end
|
63
|
+
break if agg_path # Use as much of f2d_path as we can
|
60
64
|
end
|
61
65
|
end
|
62
66
|
|
data/test/unit/query_test.rb
CHANGED
@@ -239,6 +239,9 @@ describe Mochigome::Query do
|
|
239
239
|
assert_equal 24, data_node['Sales count']
|
240
240
|
end
|
241
241
|
|
242
|
+
# TODO: Include test here against the bug I saw in JSAS where
|
243
|
+
# it would avoid including the focus if there was a shorter path.
|
244
|
+
|
242
245
|
it "does not collect aggregate data for layers below focus" do
|
243
246
|
q = Mochigome::Query.new(
|
244
247
|
[Owner, Store, Product, Category],
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mochigome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Mike Simon
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-03-
|
18
|
+
date: 2012-03-11 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|