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 +1 -1
- data/lib/model_graph.rb +17 -2
- data/lib/query.rb +10 -8
- data/test/unit/query_test.rb +12 -0
- metadata +3 -3
data/lib/mochigome_ver.rb
CHANGED
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 =
|
31
|
-
|
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
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
row
|
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
|
data/test/unit/query_test.rb
CHANGED
@@ -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:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 19
|
10
|
+
version: 0.1.19
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Mike Simon
|