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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 663ae546f63257569c7692d59478ffef3c954f2c9a74f53c78ae6ee31bdf093c
4
- data.tar.gz: df61b6a95415e4879d62b0eada8abcf732d9d7aeca882c72fa28ca929c567db1
3
+ metadata.gz: d1ec1e26cea7ad07749ac2b6545b0ad83e8aa36cf1b3a996ccced9f1977bd639
4
+ data.tar.gz: 8147a433dd7047ac450953b94090dd345aeb9d3e6fd4d2365aa5db5b2ff3e077
5
5
  SHA512:
6
- metadata.gz: e25d8a4f05d9880c4c3acbf6854393556902e0339976701949ab5b56bc3d627f20a9790144c19f00903786fa0abd947c2cb866bdc5d41856483cd8e030a281d1
7
- data.tar.gz: 418d88e3f5d6249de2781faa1f27cfc42d219538eac7c2d68611735771cf8d2413ac2a1e626559d7b8f0d0248852358a58ea5400af2a561248cb1a591126e49a
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="2" />
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
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- activecube (0.1.29)
12
+ activecube (0.1.33)
13
13
  activerecord (>= 5.2)
14
14
 
15
15
  GEM
@@ -14,7 +14,7 @@ module Activecube
14
14
  end
15
15
 
16
16
  def matches? query, measures
17
- !required || (fields - query.column_names(measures)).empty?
17
+ !required || (fields - query.column_names_required(measures)).empty?
18
18
  end
19
19
  end
20
20
  end
@@ -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) ) :
@@ -1,3 +1,3 @@
1
1
  module Activecube
2
- VERSION = "0.1.30"
2
+ VERSION = "0.1.34"
3
3
  end
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.30
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: 2020-11-30 00:00:00.000000000 Z
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: []