activecube 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|