mochigome 0.0.7 → 0.0.8
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/formatting.rb +7 -0
- data/lib/mochigome.rb +1 -0
- data/lib/mochigome_ver.rb +1 -1
- data/lib/model_extensions.rb +1 -1
- data/lib/query.rb +7 -6
- data/test/unit/query_test.rb +0 -3
- metadata +5 -4
data/lib/formatting.rb
ADDED
data/lib/mochigome.rb
CHANGED
data/lib/mochigome_ver.rb
CHANGED
data/lib/model_extensions.rb
CHANGED
@@ -291,7 +291,7 @@ module Mochigome
|
|
291
291
|
end
|
292
292
|
|
293
293
|
if vals.size == 1
|
294
|
-
vals << :id # TODO : Use real primary key
|
294
|
+
vals << :id # TODO : Use real primary key, only do this for appropriate agg funcs
|
295
295
|
elsif vals.size != 2
|
296
296
|
raise ModelSetupError.new "Wrong # of components for agg: #{obj.inspect}"
|
297
297
|
end
|
data/lib/query.rb
CHANGED
@@ -51,16 +51,15 @@ module Mochigome
|
|
51
51
|
break
|
52
52
|
else
|
53
53
|
# Route it from the closest layer model
|
54
|
-
@layers_path.
|
55
|
-
p = self.class.path_thru([layer, link_model]) + remainder.drop(1)
|
54
|
+
@layers_path.reverse.each do |layer|
|
55
|
+
p = self.class.path_thru([layer, link_model]) + remainder.drop(1) # TODO: Handle path_thru returning nil
|
56
56
|
next if (p.drop(1) & @layers_path).size > 0
|
57
57
|
next if p.uniq.size != p.size
|
58
|
-
if agg_path.nil? || p.size
|
58
|
+
if agg_path.nil? || p.size < agg_path.size
|
59
59
|
agg_path = p
|
60
|
-
key_path = @layers_path
|
60
|
+
key_path = @layers_path
|
61
61
|
end
|
62
62
|
end
|
63
|
-
break if agg_path # Use as much of f2d_path as we can
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
@@ -72,7 +71,7 @@ module Mochigome
|
|
72
71
|
agg_data_rel = access_filtered_relation(agg_data_rel, @layers_path + agg_path)
|
73
72
|
data_tbl = Arel::Table.new(data_model.table_name)
|
74
73
|
agg_fields = data_model.mochigome_aggregation_settings.options[:fields].reject{|a| a[:in_ruby]}
|
75
|
-
agg_data_rel.project
|
74
|
+
agg_data_rel.project # FIXME ??? What is this for?
|
76
75
|
agg_fields.each_with_index do |a, i|
|
77
76
|
agg_data_rel.project(a[:value_proc].call(data_tbl).as("d#{i}"))
|
78
77
|
end
|
@@ -86,6 +85,8 @@ module Mochigome
|
|
86
85
|
end
|
87
86
|
d_rel.where(cond) if cond
|
88
87
|
|
88
|
+
# FIXME: This subtable won't be necessary for all forms of aggregation.
|
89
|
+
# When we can avoid it, we should, because query performance is greatly increased.
|
89
90
|
a_rel = Arel::SelectManager.new(
|
90
91
|
Arel::Table.engine,
|
91
92
|
Arel.sql("(#{d_rel.to_sql}) as mochigome_data")
|
data/test/unit/query_test.rb
CHANGED
@@ -239,9 +239,6 @@ describe Mochigome::Query do
|
|
239
239
|
assert_equal 24, data_node['Sales count']
|
240
240
|
end
|
241
241
|
|
242
|
-
# TODO: Include test here against the bug I saw in JSAS where
|
243
|
-
# it would avoid including the focus if there was a shorter path.
|
244
|
-
|
245
242
|
it "does not collect aggregate data for layers below focus" do
|
246
243
|
q = Mochigome::Query.new(
|
247
244
|
[Owner, Store, Product, Category],
|
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: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 8
|
10
|
+
version: 0.0.8
|
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-03-
|
18
|
+
date: 2012-03-12 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/arel_rails2_hacks.rb
|
94
94
|
- lib/data_node.rb
|
95
95
|
- lib/exceptions.rb
|
96
|
+
- lib/formatting.rb
|
96
97
|
- lib/mochigome.rb
|
97
98
|
- lib/mochigome_ver.rb
|
98
99
|
- lib/model_extensions.rb
|