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 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