activecube 0.1.17 → 0.1.18

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: 4ba2ca856a96d75c2628e55d650d8151b8a7a21b4f403e147d9d1f84f19a94b8
4
- data.tar.gz: ea75a5c6d7fa9471213788d65be3c55e5a4b0587af8c53c14b79d7c02f40d554
3
+ metadata.gz: 774718534987fd65114b6d33ef5ea98f28ffc146bc1cb9e3299d4ec6b571f2cc
4
+ data.tar.gz: 317c3d6e4472c20724ccf6d31202842623ddb05725b002baf8d0224d4bb42af4
5
5
  SHA512:
6
- metadata.gz: 92fec873743db10f2f2b7b9bbd919e96d960ade4a3abf2dd0fd82f32e5642ff0eddccfd78ec66a787e62a1de5958b12143410899edd7a80251525cb907dbc29a
7
- data.tar.gz: 1006ba66ef723a95503b61d1598226358f1c0a8fbff3946a4a0ea7aa6f34408c016a817e3a7a8bfd35588b9b49aac45a7feed8058e7db47792eedcd367167256
6
+ metadata.gz: bef4f7a62f25b52eb6ef8b07d89248b7a579c6f329bb3e645e7d59dd96d336fa7534e6669c6bb598d70392220e00d854a9481d956b6eeac8ad020cd728473dc9
7
+ data.tar.gz: b7152cde69fc96042edbe3be784c5d857def4984d07776da95c5af2d24bab45d0a9cf9afc716eb317b27e5eed204a76478cf32d37d9aaeac2456edd4ced05eb4
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- activecube (0.1.16)
12
+ activecube (0.1.17)
13
13
  activerecord (>= 5.2)
14
14
 
15
15
  GEM
data/lib/activecube.rb CHANGED
@@ -3,6 +3,7 @@ require 'activecube/active_record_extension'
3
3
 
4
4
  require 'activecube/input_argument_error'
5
5
  require 'activecube/base'
6
+ require 'activecube/view'
6
7
  require 'activecube/dimension'
7
8
  require 'activecube/metric'
8
9
  require 'activecube/selector'
@@ -20,7 +20,9 @@ module Activecube::Query
20
20
  @measures = measures
21
21
  @selectors = selectors
22
22
  @options = options
23
- @tables = model_tables || cube.models.map{|m| Activecube::Processor::Table.new m}
23
+ @tables = model_tables || cube.models.map{|m|
24
+ m < Activecube::View ? m.new : Activecube::Processor::Table.new(m)
25
+ }
24
26
  end
25
27
 
26
28
  def slice *args
@@ -24,9 +24,12 @@ module Activecube
24
24
 
25
25
 
26
26
  def super_model
27
- raise Activecube::InputArgumentError, "No tables specified for cube #{name}" if models.count==0
27
+ raise Activecube::InputArgumentError, "No tables specified for cube #{name}" unless models && models.count>0
28
28
 
29
- models.collect{ |t|
29
+
30
+ models.collect{|m|
31
+ m < View ? m.models : m
32
+ }.flatten.uniq.collect{ |t|
30
33
  t.ancestors.select{|c| c < ActiveRecord::Base }
31
34
  }.transpose.select{|c|
32
35
  c.uniq.count==1
@@ -1,3 +1,3 @@
1
1
  module Activecube
2
- VERSION = "0.1.17"
2
+ VERSION = "0.1.18"
3
3
  end
@@ -0,0 +1,32 @@
1
+ require 'activecube/view_definition'
2
+
3
+ module Activecube
4
+ class View
5
+ extend ViewDefinition
6
+
7
+ def model
8
+ self.class
9
+ end
10
+
11
+ def name
12
+ model.name
13
+ end
14
+
15
+ def matches? query, _measures = query.measures
16
+ true
17
+ end
18
+
19
+ def measures? measure
20
+ true
21
+ end
22
+
23
+ def query _cube_query
24
+ raise "query method have to be implemented in #{name}"
25
+ end
26
+
27
+ def join _cube_query, _left_query, _right_query
28
+ raise "join method have to be implemented in #{name}"
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ require 'active_support/concern'
2
+
3
+ module Activecube::ViewDefinition
4
+
5
+ attr_reader :activecube_indexes, :models
6
+
7
+ def index index_name, *args
8
+ (@activecube_indexes ||= []) << Activecube::Processor::Index.new(index_name,*args)
9
+ end
10
+
11
+ def table x
12
+ (@models ||= []) << x
13
+ end
14
+
15
+
16
+ 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.17
4
+ version: 0.1.18
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-05-12 00:00:00.000000000 Z
11
+ date: 2020-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -117,6 +117,8 @@ files:
117
117
  - lib/activecube/query_methods.rb
118
118
  - lib/activecube/selector.rb
119
119
  - lib/activecube/version.rb
120
+ - lib/activecube/view.rb
121
+ - lib/activecube/view_definition.rb
120
122
  homepage: https://github.com/bitquery/activecube
121
123
  licenses:
122
124
  - MIT