mochigome 0.1.18 → 0.1.19

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.18"
2
+ VERSION = "0.1.19"
3
3
  end
data/lib/model_graph.rb CHANGED
@@ -27,8 +27,23 @@ module Mochigome
27
27
  r += expr_models(e.send(m)) if e.respond_to?(m)
28
28
  end
29
29
  if e.respond_to?(:relation)
30
- model = @table_to_model[e.relation.name] or
31
- raise ModelSetupError.new("Table lookup error: #{e.relation.name}")
30
+ model = nil
31
+ begin
32
+ model = @table_to_model[e.relation.name] or
33
+ raise ModelSetupError.new("Table lookup error: #{e.relation.name}")
34
+ rescue ModelSetupError
35
+ Dir.glob(RAILS_ROOT + '/app/models/*.rb').each do |path|
36
+ clsname = File.basename(path).sub(/\.rb$/, "").classify
37
+ require File.expand_path(path) unless Object.const_defined?(clsname)
38
+ end
39
+ Object.subclasses_of(ActiveRecord::Base).each do |m|
40
+ if m.table_name == e.relation.name
41
+ model = m
42
+ break
43
+ end
44
+ end
45
+ raise unless model
46
+ end
32
47
  r.add model
33
48
  end
34
49
  r
data/lib/query.rb CHANGED
@@ -107,16 +107,18 @@ module Mochigome
107
107
  end
108
108
  root.comment.gsub!(/(\n|^) +/, "\\1")
109
109
 
110
- r = @ids_rel.clone
111
- r.apply_condition(cond)
112
- ids_sql = r.to_sql
113
- if ids_sql
114
- ids_table = connection.select_all(ids_sql).map do |row|
115
- row.each do |k,v|
116
- row[k] = denilify(v)
110
+ unless @layer_types.empty?
111
+ r = @ids_rel.clone
112
+ r.apply_condition(cond)
113
+ ids_sql = r.to_sql
114
+ if ids_sql
115
+ ids_table = connection.select_all(ids_sql).map do |row|
116
+ row.each do |k,v|
117
+ row[k] = denilify(v)
118
+ end
117
119
  end
120
+ fill_layers(ids_table, {[] => root}, @layer_types)
118
121
  end
119
- fill_layers(ids_table, {[] => root}, @layer_types)
120
122
  end
121
123
 
122
124
  root
@@ -287,6 +287,18 @@ describe Mochigome::Query do
287
287
  assert_empty data_node.children
288
288
  end
289
289
 
290
+ it "can collect filtered aggregate data without any layers" do
291
+ q = Mochigome::Query.new(
292
+ [],
293
+ :aggregate_sources => [Product]
294
+ )
295
+
296
+ data_node = q.run(@store_x)
297
+ assert_equal [@product_a, @product_c].map(&:price).sum.to_f.to_s,
298
+ data_node["Products sum price"].to_f.to_s
299
+ assert_empty data_node.children
300
+ end
301
+
290
302
  it "can use a named aggregate data setting" do
291
303
  q = Mochigome::Query.new(
292
304
  [Owner],
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: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 18
10
- version: 0.1.18
9
+ - 19
10
+ version: 0.1.19
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Mike Simon