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 CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mochigome
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -16,6 +16,10 @@ module Mochigome
16
16
  true
17
17
  end
18
18
 
19
+ def to_real_model
20
+ self
21
+ end
22
+
19
23
  # TODO: Use this instead of calling Table.new all over the place
20
24
  def arel_table
21
25
  Arel::Table.new(table_name)
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{|e| (e.real_model? ? e : e.model)}.uniq
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.real_model? ? src : src.model
54
- real_tgt = tgt.real_model? ? tgt : tgt.model
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{|e| (e.real_model? ? e : e.model)}.uniq
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
@@ -25,6 +25,10 @@ module Mochigome
25
25
  false
26
26
  end
27
27
 
28
+ def to_real_model
29
+ @model
30
+ end
31
+
28
32
  def arel_table
29
33
  @model.arel_table
30
34
  end
@@ -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), Store, Product]
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 "John's Store", (data_node/1/0).name
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: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.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-10 00:00:00 Z
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