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 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