activecube 0.1.23 → 0.1.24

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: f4761a4080baea000688c32cd35753b72f0fd51d7e6a0818da31c8bd5141f966
4
- data.tar.gz: e5116aa48a23176bd91f4e90bbf6d83ac300c09aa3c04a951afbe8eeb3918133
3
+ metadata.gz: e08b7128492c4b84b982715355728b6506c0eb4dc155875ef1323bc88e9c9777
4
+ data.tar.gz: 856d25b480a319b11476c9d388f20aa656325f812299018c67df6b44bed322e8
5
5
  SHA512:
6
- metadata.gz: 2638118ea471ff784d1689a86dde10a535dcfd0e4eabeb93a9b6206236f116017ffe5d08de03820adb45d5e4291b42ca853c755efa5cddf37d664a09e3122ea9
7
- data.tar.gz: 6339c6bad22e0c0fbebbd2e8987ccac2085374fa31e274c902963b5de5b8f5dd6531b19dc95c79ccf9e1722ee277bb469a1bddc03d41d991d8fe64cafa61c63e
6
+ metadata.gz: 76d9c60cfba31ac7f65f819dc1e5b8b0d6689aebbb162f8677f45e7388442dfc7d581e2bec945478d058891f61fc2b7b34de5b7e79f40c510bb88c1f21647547
7
+ data.tar.gz: 880550994778371e8dbd416691bc252a51de37123557ee73ad4c4ac5dcdb273a2a29084787c311b7219629cf42ac782302e664a495e5870deb69e4a6a8323730
@@ -7,13 +7,13 @@ require 'activecube/query/measure_nothing'
7
7
  module Activecube::Processor
8
8
  class Composer
9
9
 
10
- attr_reader :cube_query, :models
10
+ attr_reader :cube_query, :models, :query
11
11
  def initialize cube_query
12
12
  @cube_query = cube_query
13
13
  end
14
14
 
15
15
  def build_query
16
- compose_queries optimize! ranked_tables
16
+ @query = compose_queries optimize! ranked_tables
17
17
  end
18
18
 
19
19
  def connection
@@ -14,7 +14,7 @@ module Activecube::Query
14
14
 
15
15
  include ChainAppender
16
16
 
17
- attr_reader :cube, :slices, :measures, :selectors, :options, :tables
17
+ attr_reader :cube, :slices, :measures, :selectors, :options, :tables, :sql
18
18
  def initialize cube, slices = [], measures = [], selectors = [], options = [], model_tables = nil
19
19
  @cube = cube
20
20
  @slices = slices
@@ -36,18 +36,22 @@ module Activecube::Query
36
36
  end
37
37
 
38
38
  def slice *args
39
+ clear_sql
39
40
  append *args, @slices, Slice, cube.dimensions
40
41
  end
41
42
 
42
43
  def measure *args
44
+ clear_sql
43
45
  append *args, @measures, Measure, cube.metrics
44
46
  end
45
47
 
46
48
  def when *args
49
+ clear_sql
47
50
  append *args, @selectors, Selector, cube.selectors
48
51
  end
49
52
 
50
53
  def desc *args
54
+ clear_sql
51
55
  args.each{|arg|
52
56
  options << Ordering.new(arg, :desc)
53
57
  }
@@ -55,6 +59,7 @@ module Activecube::Query
55
59
  end
56
60
 
57
61
  def asc *args
62
+ clear_sql
58
63
  args.each{|arg|
59
64
  options << Ordering.new( arg, :asc)
60
65
  }
@@ -62,6 +67,7 @@ module Activecube::Query
62
67
  end
63
68
 
64
69
  def offset *args
70
+ clear_sql
65
71
  args.each{|arg|
66
72
  options << Limit.new( arg, :skip)
67
73
  }
@@ -69,6 +75,7 @@ module Activecube::Query
69
75
  end
70
76
 
71
77
  def limit *args
78
+ clear_sql
72
79
  args.each{|arg|
73
80
  options << Limit.new( arg, :take)
74
81
  }
@@ -77,13 +84,12 @@ module Activecube::Query
77
84
 
78
85
 
79
86
  def query
80
- composer = Activecube::Processor::Composer.new(self)
81
- sql = composer.build_query.to_sql
82
- composer.connection.exec_query(sql)
87
+ sql = to_query.to_sql
88
+ @composed.connection.exec_query(sql)
83
89
  end
84
90
 
85
91
  def to_query
86
- Activecube::Processor::Composer.new(self).build_query
92
+ @composed.try(:query) || (@composed = Activecube::Processor::Composer.new(self)).build_query
87
93
  end
88
94
 
89
95
  def to_sql
@@ -136,5 +142,10 @@ module Activecube::Query
136
142
  options.select{|s| s.kind_of? Ordering}
137
143
  end
138
144
 
145
+ private
146
+
147
+ def clear_sql
148
+ @composed = nil
149
+ end
139
150
  end
140
151
  end
@@ -1,3 +1,3 @@
1
1
  module Activecube
2
- VERSION = "0.1.23"
2
+ VERSION = "0.1.24"
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.23
4
+ version: 0.1.24
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-28 00:00:00.000000000 Z
11
+ date: 2020-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord