mochigome 0.1.1 → 0.1.2
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/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
|