activecube 0.1.30 → 0.1.34
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.
- checksums.yaml +4 -4
- data/.idea/workspace.xml +9 -2
- data/Gemfile.lock +1 -1
- data/lib/activecube/processor/index.rb +1 -1
- data/lib/activecube/query/cube_query.rb +4 -0
- data/lib/activecube/query/item.rb +32 -0
- data/lib/activecube/query/measure.rb +2 -0
- data/lib/activecube/query/selector.rb +6 -0
- data/lib/activecube/query/slice.rb +2 -0
- data/lib/activecube/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1ec1e26cea7ad07749ac2b6545b0ad83e8aa36cf1b3a996ccced9f1977bd639
|
4
|
+
data.tar.gz: 8147a433dd7047ac450953b94090dd345aeb9d3e6fd4d2365aa5db5b2ff3e077
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ec017798d5edc0bbe41f60ac1ff90fea9ac80afb0a9652f0374b9b16aac66779ba42dc3b5531e4fcd663afbe188ad0d371e960e599483caa02326f7e3f093f3
|
7
|
+
data.tar.gz: dea80f006dd4073aa01cda9edd3fb61f3761fb8817879cf198f81b7cc6289f42223aa3e661a1e2a90138418d57f7ef7ecf89a161a950a284d32f4e98e9393269
|
data/.idea/workspace.xml
CHANGED
@@ -10,7 +10,9 @@
|
|
10
10
|
<select />
|
11
11
|
</component>
|
12
12
|
<component name="ChangeListManager">
|
13
|
-
<list default="true" id="77368870-4045-496a-9737-2c7f83086a16" name="Default Changelist" comment="initial implementation"
|
13
|
+
<list default="true" id="77368870-4045-496a-9737-2c7f83086a16" name="Default Changelist" comment="initial implementation">
|
14
|
+
<change beforePath="$PROJECT_DIR$/Gemfile.lock" beforeDir="false" afterPath="$PROJECT_DIR$/Gemfile.lock" afterDir="false" />
|
15
|
+
</list>
|
14
16
|
<option name="SHOW_DIALOG" value="false" />
|
15
17
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
16
18
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
@@ -26,6 +28,8 @@
|
|
26
28
|
<option name="showLibraryContents" value="true" />
|
27
29
|
</component>
|
28
30
|
<component name="PropertiesComponent">
|
31
|
+
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
32
|
+
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
29
33
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
30
34
|
<property name="last_opened_file_path" value="$PROJECT_DIR$/lib/activecube" />
|
31
35
|
<property name="node.js.detected.package.eslint" value="true" />
|
@@ -46,6 +50,7 @@
|
|
46
50
|
<recent name="$PROJECT_DIR$/lib/activecube" />
|
47
51
|
</key>
|
48
52
|
</component>
|
53
|
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
49
54
|
<component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" RAKE_SPRING_PRE_LOADER_OPTION="true" RAILS_SPRING_PRE_LOADER_OPTION="true" />
|
50
55
|
<component name="SvnConfiguration">
|
51
56
|
<configuration />
|
@@ -58,6 +63,7 @@
|
|
58
63
|
<option name="presentableId" value="Default" />
|
59
64
|
<updated>1581885096407</updated>
|
60
65
|
<workItem from="1581885099890" duration="3547000" />
|
66
|
+
<workItem from="1621436559886" duration="39000" />
|
61
67
|
</task>
|
62
68
|
<task id="LOCAL-00001" summary="initial commit">
|
63
69
|
<created>1581885128091</created>
|
@@ -98,7 +104,7 @@
|
|
98
104
|
<servers />
|
99
105
|
</component>
|
100
106
|
<component name="TypeScriptGeneratedFilesManager">
|
101
|
-
<option name="version" value="
|
107
|
+
<option name="version" value="3" />
|
102
108
|
</component>
|
103
109
|
<component name="Vcs.Log.Tabs.Properties">
|
104
110
|
<option name="TAB_STATES">
|
@@ -110,6 +116,7 @@
|
|
110
116
|
</entry>
|
111
117
|
</map>
|
112
118
|
</option>
|
119
|
+
<option name="oldMeFiltersMigrated" value="true" />
|
113
120
|
</component>
|
114
121
|
<component name="VcsManagerConfiguration">
|
115
122
|
<MESSAGE value="initial commit" />
|
data/Gemfile.lock
CHANGED
@@ -107,6 +107,10 @@ module Activecube::Query
|
|
107
107
|
(measures + slices + selectors).map(&:required_column_names).flatten.uniq
|
108
108
|
end
|
109
109
|
|
110
|
+
def column_names_required measures = self.measures
|
111
|
+
(measures + slices + selectors.select{|s| !s.kind_of?(Selector::CombineSelector)}).map(&:required_column_names).flatten.uniq
|
112
|
+
end
|
113
|
+
|
110
114
|
def selector_column_names measures = self.measures
|
111
115
|
(measures.map(&:selectors) + slices.map(&:selectors) + selectors).flatten.map(&:required_column_names).flatten.uniq
|
112
116
|
end
|
@@ -22,5 +22,37 @@ module Activecube::Query
|
|
22
22
|
"#{definition.class.name}(#{key})"
|
23
23
|
end
|
24
24
|
|
25
|
+
def append_with! model, cube_query, table, query
|
26
|
+
|
27
|
+
if definition.respond_to?(:with_expression) &&
|
28
|
+
(with_expression = definition.with_expression(model, cube_query, table, query))
|
29
|
+
with_expression.each_pair do |key, expr|
|
30
|
+
query = try_append_with(query, key, expr)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
query
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
def try_append_with(query, key, expr)
|
41
|
+
expr = Arel.sql(expr) if expr.kind_of?(String)
|
42
|
+
query = query.where(Arel.sql('1')) unless query.respond_to?(:ast)
|
43
|
+
if (with = query.ast.with)
|
44
|
+
existing = with.expr.detect{|expr| expr.right==key }
|
45
|
+
if existing
|
46
|
+
raise "Key #{key} defined twice in WITH statement, with different expressions #{expr.to_sql} AND #{existing.left}" if existing.left!=expr.to_s
|
47
|
+
query
|
48
|
+
else
|
49
|
+
query.with(with.expr + [expr.as(key)])
|
50
|
+
end
|
51
|
+
else
|
52
|
+
query.with(expr.as(key))
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
25
57
|
end
|
26
58
|
end
|
@@ -36,6 +36,7 @@ module Activecube::Query
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def append_query model, cube_query, table, query
|
39
|
+
query = append_with!(model, cube_query, table, query)
|
39
40
|
attr_alias = "`#{key.to_s}`"
|
40
41
|
expr = definition.expression model, table, self, cube_query
|
41
42
|
query.project expr.as(attr_alias)
|
@@ -53,6 +54,7 @@ module Activecube::Query
|
|
53
54
|
|
54
55
|
private
|
55
56
|
|
57
|
+
|
56
58
|
def modifier_methods!
|
57
59
|
definition.class.modifiers.each_pair do |key, modifier|
|
58
60
|
define_singleton_method key do |*args|
|
@@ -32,6 +32,11 @@ module Activecube::Query
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def append_query model, cube_query, arel_table, query
|
35
|
+
|
36
|
+
@selectors.each do |s|
|
37
|
+
query = s.append_with!(model, cube_query, arel_table, query)
|
38
|
+
end
|
39
|
+
|
35
40
|
query.where expression(model, arel_table, cube_query)
|
36
41
|
end
|
37
42
|
|
@@ -110,6 +115,7 @@ module Activecube::Query
|
|
110
115
|
end
|
111
116
|
|
112
117
|
def append_query model, cube_query, table, query
|
118
|
+
query = append_with!(model, cube_query, table, query)
|
113
119
|
query.where(expression model, table, cube_query)
|
114
120
|
end
|
115
121
|
|
@@ -60,6 +60,8 @@ module Activecube::Query
|
|
60
60
|
|
61
61
|
def append_query model, cube_query, table, query
|
62
62
|
|
63
|
+
query = append_with!(model, cube_query, table, query)
|
64
|
+
|
63
65
|
attr_alias = "`#{key.to_s}`"
|
64
66
|
expr = (parent || definition.respond_to?(:expression)) ?
|
65
67
|
Arel.sql(definition.expression( model, table, self, cube_query) ) :
|
data/lib/activecube/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activecube
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksey Studnev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -126,7 +126,7 @@ homepage: https://github.com/bitquery/activecube
|
|
126
126
|
licenses:
|
127
127
|
- MIT
|
128
128
|
metadata: {}
|
129
|
-
post_install_message:
|
129
|
+
post_install_message:
|
130
130
|
rdoc_options: []
|
131
131
|
require_paths:
|
132
132
|
- lib
|
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
requirements: []
|
144
144
|
rubygems_version: 3.0.4
|
145
|
-
signing_key:
|
145
|
+
signing_key:
|
146
146
|
specification_version: 4
|
147
147
|
summary: Multi-Dimensional Queries with Rails
|
148
148
|
test_files: []
|