activecube 0.1.17 → 0.1.18

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