activecube 0.1.23 → 0.1.24

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