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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 219e2133090d27d2c5af643c31657ea1882d9a6e17c5e93dbe3fa8e9c977ca41
4
- data.tar.gz: 184e6baf918fbe1ab6098f5209519cd3d33f1b4eda6c385e36146aebfd4f0936
3
+ metadata.gz: 07ee0a4ed85e2f44c15312a2fb5db85b51216c762b11841a6bbeccfe0f61feb1
4
+ data.tar.gz: e8d1e9cafbdbfae253795a7e800c58c5440b58f8cf2114ed22b4c3939d3b84d8
5
5
  SHA512:
6
- metadata.gz: da5c6da9bbccd5269039be4cd2232eb1e9c5972aeaa3dcdc62a592dc3ba0c769f470a04a91e0ed71044792fb7a65f8c8eef2e5e663b948a572989a544391639a
7
- data.tar.gz: 1e7e2802abdc89ef0cf41a06c9f96822a2c48f6dbe2db91c0ab97b198f4de857919d61c3c3ffe2ef5cda8be4942becac6337557fa4fd81514f225bbd79c7f64d
6
+ metadata.gz: c71efd229e58542bb67a2013f2931977cd32bed9c561d6b2f868ddd84584fd2b0d148d2381cdc456d0cb6e63379387fffffa8ced761125124609689476c0de3a
7
+ data.tar.gz: 4e9d3e28aabfc5abe471db21018db200da52e16c0ca38327bacde36eec88ca16dc8f0592dddb07bc295b31e7c7a3acb4d45044c6f9785dcd013f1fa820369971
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- activecube (0.1.13)
12
+ activecube (0.1.14)
13
13
  activerecord (>= 5.2)
14
14
 
15
15
  GEM
@@ -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 += [OrSelector.new(reduced_measures.map(&:selectors).flatten.uniq)]
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
@@ -1,3 +1,3 @@
1
1
  module Activecube
2
- VERSION = "0.1.14"
2
+ VERSION = "0.1.15"
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.14
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-14 00:00:00.000000000 Z
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