activecube 0.1.14 → 0.1.15
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/Gemfile.lock +1 -1
- data/lib/activecube/query/cube_query.rb +1 -2
- data/lib/activecube/query/selector.rb +37 -0
- data/lib/activecube/version.rb +1 -1
- metadata +2 -3
- data/lib/activecube/query/or_selector.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07ee0a4ed85e2f44c15312a2fb5db85b51216c762b11841a6bbeccfe0f61feb1
|
4
|
+
data.tar.gz: e8d1e9cafbdbfae253795a7e800c58c5440b58f8cf2114ed22b4c3939d3b84d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c71efd229e58542bb67a2013f2931977cd32bed9c561d6b2f868ddd84584fd2b0d148d2381cdc456d0cb6e63379387fffffa8ced761125124609689476c0de3a
|
7
|
+
data.tar.gz: 4e9d3e28aabfc5abe471db21018db200da52e16c0ca38327bacde36eec88ca16dc8f0592dddb07bc295b31e7c7a3acb4d45044c6f9785dcd013f1fa820369971
|
data/Gemfile.lock
CHANGED
@@ -2,7 +2,6 @@ require 'activecube/query/chain_appender'
|
|
2
2
|
require 'activecube/query/item'
|
3
3
|
require 'activecube/query/limit'
|
4
4
|
require 'activecube/query/measure'
|
5
|
-
require 'activecube/query/or_selector'
|
6
5
|
require 'activecube/query/ordering'
|
7
6
|
require 'activecube/query/selector'
|
8
7
|
require 'activecube/query/slice'
|
@@ -109,7 +108,7 @@ module Activecube::Query
|
|
109
108
|
end
|
110
109
|
|
111
110
|
unless reduced_measures.detect{|rm| rm.selectors.empty? }
|
112
|
-
reduced_selectors += [
|
111
|
+
reduced_selectors += [Selector.or(reduced_measures.map(&:selectors).flatten.uniq)]
|
113
112
|
end
|
114
113
|
|
115
114
|
return self if (reduced_measures == self.measures) && (reduced_selectors == self.selectors)
|
@@ -8,6 +8,35 @@ module Activecube::Query
|
|
8
8
|
'not_eq' => 'not_in'
|
9
9
|
}
|
10
10
|
|
11
|
+
class CombineSelector < Selector
|
12
|
+
|
13
|
+
def initialize selectors, operator
|
14
|
+
@selectors = selectors
|
15
|
+
@operator = operator
|
16
|
+
end
|
17
|
+
|
18
|
+
def required_column_names
|
19
|
+
@selectors.map(&:required_column_names).uniq
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
"Selector any(#{@selectors.map(&:to_s).join(',')})"
|
24
|
+
end
|
25
|
+
|
26
|
+
def expression model, arel_table, cube_query
|
27
|
+
expr = nil
|
28
|
+
@selectors.each do |s|
|
29
|
+
expr = expr ? expr.send(@operator, s.expression(model, arel_table, cube_query)) : s.expression(model, arel_table, cube_query)
|
30
|
+
end
|
31
|
+
expr
|
32
|
+
end
|
33
|
+
|
34
|
+
def append_query model, cube_query, arel_table, query
|
35
|
+
query.where expression(model, arel_table, cube_query)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
11
40
|
class Operator
|
12
41
|
|
13
42
|
attr_reader :operation, :argument
|
@@ -107,5 +136,13 @@ module Activecube::Query
|
|
107
136
|
"Selector #{super}"
|
108
137
|
end
|
109
138
|
|
139
|
+
def self.or(selectors)
|
140
|
+
CombineSelector.new(selectors, :or)
|
141
|
+
end
|
142
|
+
|
143
|
+
def self.and(selectors)
|
144
|
+
CombineSelector.new(selectors, :and)
|
145
|
+
end
|
146
|
+
|
110
147
|
end
|
111
148
|
end
|
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.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksey Studnev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -111,7 +111,6 @@ files:
|
|
111
111
|
- lib/activecube/query/measure.rb
|
112
112
|
- lib/activecube/query/measure_nothing.rb
|
113
113
|
- lib/activecube/query/modification.rb
|
114
|
-
- lib/activecube/query/or_selector.rb
|
115
114
|
- lib/activecube/query/ordering.rb
|
116
115
|
- lib/activecube/query/selector.rb
|
117
116
|
- lib/activecube/query/slice.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'activecube/query/selector'
|
2
|
-
|
3
|
-
module Activecube
|
4
|
-
module Query
|
5
|
-
class OrSelector < Selector
|
6
|
-
|
7
|
-
attr_reader :selectors
|
8
|
-
def initialize selectors
|
9
|
-
@selectors = selectors
|
10
|
-
end
|
11
|
-
|
12
|
-
def append_query model, cube_query, table, query
|
13
|
-
expr = nil
|
14
|
-
selectors.each do |s|
|
15
|
-
expr = expr ? expr.or(s.expression model, table, cube_query) : s.expression(model, table, cube_query)
|
16
|
-
end
|
17
|
-
query.where(expr)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|