mochigome 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mochigome_ver.rb +1 -1
- data/lib/model_extensions.rb +4 -0
- data/lib/model_graph.rb +5 -3
- data/lib/query.rb +2 -2
- data/lib/subgroup_model.rb +4 -0
- data/test/unit/query_test.rb +3 -3
- metadata +4 -4
data/lib/mochigome_ver.rb
CHANGED
data/lib/model_extensions.rb
CHANGED
data/lib/model_graph.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# TODO: Write some unit tests for this module
|
2
|
+
|
1
3
|
require 'rgl/adjacency'
|
2
4
|
require 'rgl/traversal'
|
3
5
|
|
@@ -28,7 +30,7 @@ module Mochigome
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def relation_over_path(path, rel = nil)
|
31
|
-
real_path = path.map
|
33
|
+
real_path = path.map(&:to_real_model).uniq
|
32
34
|
# Project ensures that we return a Rel, not a Table, even if path is empty
|
33
35
|
rel ||= real_path.first.arel_table.project
|
34
36
|
(0..(real_path.size-2)).each do |i|
|
@@ -50,8 +52,8 @@ module Mochigome
|
|
50
52
|
src = path.last
|
51
53
|
tgt = model_queue.shift
|
52
54
|
next if src == tgt
|
53
|
-
real_src = src.
|
54
|
-
real_tgt = tgt.
|
55
|
+
real_src = src.to_real_model
|
56
|
+
real_tgt = tgt.to_real_model
|
55
57
|
unless real_src == real_tgt
|
56
58
|
seg = @shortest_paths[[real_src,real_tgt]]
|
57
59
|
unless seg
|
data/lib/query.rb
CHANGED
@@ -192,7 +192,7 @@ module Mochigome
|
|
192
192
|
@spine_layers = layers
|
193
193
|
@spine = @model_graph.path_thru(layers) or
|
194
194
|
raise QueryError.new("No valid path thru #{layers.inspect}") #TODO Test
|
195
|
-
@models = Set.new @spine
|
195
|
+
@models = Set.new @spine.map(&:to_real_model)
|
196
196
|
@rel = @model_graph.relation_over_path(@spine)
|
197
197
|
|
198
198
|
@spine_layers.each{|m| select_model_id(m)}
|
@@ -245,7 +245,7 @@ module Mochigome
|
|
245
245
|
end
|
246
246
|
|
247
247
|
def join_on_path(path)
|
248
|
-
path = path.map
|
248
|
+
path = path.map(&:to_real_model).uniq
|
249
249
|
(0..(path.size-2)).map{|i| [path[i], path[i+1]]}.each do |src, tgt|
|
250
250
|
add_join_link src, tgt
|
251
251
|
end
|
data/lib/subgroup_model.rb
CHANGED
data/test/unit/query_test.rb
CHANGED
@@ -172,12 +172,12 @@ describe Mochigome::Query do
|
|
172
172
|
|
173
173
|
it "can subgroup layers by attributes without including layer model" do
|
174
174
|
q = Mochigome::Query.new(
|
175
|
-
[Mochigome::SubgroupModel.new(Owner, :last_name),
|
175
|
+
[Mochigome::SubgroupModel.new(Owner, :last_name)],
|
176
|
+
:aggregate_sources => [Sale]
|
176
177
|
)
|
177
178
|
data_node = q.run
|
178
179
|
assert_equal "Smith", (data_node/1).name
|
179
|
-
assert_equal
|
180
|
-
assert_equal "Product A", (data_node/1/0/0).name
|
180
|
+
assert_equal 8, (data_node/1)['Sales count']
|
181
181
|
end
|
182
182
|
|
183
183
|
# TODO: Test diamond patterns
|
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: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
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-04-
|
18
|
+
date: 2012-04-12 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|