from_clause_translate 0.2.0 → 0.2.1

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: dec03bf1ffebcc53cdcd25cae40ae52f8671813821d8c0cd78424506f72e9452
4
- data.tar.gz: 5062c3aa55d691f3070d0f15a8bea5c730b769e03c12db65cd011bf7ae70ba7e
3
+ metadata.gz: 8dd3c42b4a4d39f887365fcd181438221a2a5d67f7582e6da06ee1349e8035e8
4
+ data.tar.gz: b54e431c490c120a93be7c4ac714d6f47c972cea35aac7ad38508f892f18d4dd
5
5
  SHA512:
6
- metadata.gz: 2daa5fecb8a07c5ac4c2ada8199b490a8e5e4519c3cc1b5d8e88b62df6126edb69c7d918d60cd705ecabea49dedd1829e80a1e4441d53cd26319dee409c12d59
7
- data.tar.gz: 86f3d4e1f41f6ac155aa8c81b3e14f48b885051c78c18d44d868b22eb79d1c88327490110424509f0bfaf4b122fac859c891e4b1ce0bd3170cb370d526230afe
6
+ metadata.gz: de67e993ee641c3c6e1eee55b211be68d2391097dac411aaa2240ace9068664ac7b80009754ee3f785eb0f1bf3075e3eb8cbc1f5aeb00a75fe3319d3cdc5eaa8
7
+ data.tar.gz: 97a3d308c290712116f608470e20d0f185ebfefcbc00e182d9eb22e7158d03bfc176c346feba1c18102ef937b336554a6b23aa776815ce5b63349450bcbd8214
@@ -1,68 +1,57 @@
1
1
  require 'from_clause_translate/translated_columns_builder'
2
2
 
3
3
  module ActiveRecord::Relation::Extended
4
- def to_sql
5
- apply_translates unless eager_loading?
6
- super
7
- end
8
-
9
- def exec_queries &block
10
- apply_translates
11
- super(&block)
12
- end
13
-
14
- def pluck *columns
15
- if !@translated_extra_columns && @klass.const_defined?(:TRANSLATED)
16
- @translated_extra_columns = columns
17
- end
18
- super(*columns)
19
- end
20
-
21
4
  def arel aliases = nil
22
- return super aliases unless @translated_extra_columns
23
- add_translated_columns @translated_extra_columns
24
- @translated_extra_columns = nil
25
- joins = @values.delete :joins
26
- apply_translates super(aliases), joins
5
+ apply_translates
6
+ super aliases
27
7
  end
28
8
 
29
9
  def add_translated_columns columns
30
10
  (@values[:translated] ||= []).concat columns
31
11
  end
32
12
 
13
+ def add_translated_column column
14
+ (@values[:translated] ||= []) << column
15
+ end
16
+
33
17
  UNSCOPING_VALUES =
34
18
  ActiveRecord::QueryMethods::VALID_UNSCOPING_VALUES.dup.delete(:joins)
35
19
 
36
- def apply_translates arel = nil, joins = nil
37
- joins ||= @values.delete :joins
38
- arel ||= self.arel
20
+ def apply_translates
39
21
  return if @translates_applied || !@klass.const_defined?(:TRANSLATED)
40
22
 
41
23
  @translates_applied = true
24
+
25
+ @arel ||= build_arel nil
26
+
42
27
  columns = translated_columns_get
43
28
  return unless columns
44
29
 
30
+ if @values[:joins]
31
+ joins = @values.delete :joins
32
+ @arel = build_arel nil
33
+ end
34
+
45
35
  rel = unscope(*UNSCOPING_VALUES).select(columns)
36
+ rel.instance_variable_set(:@translates_applied, true)
46
37
  rel.instance_variable_get(:@values)[:joins] = joins if joins
47
38
  from = rel.arel.to_sql
48
39
  as = @klass.table_name
49
- arel.from("(#{from}) #{as}")
40
+ @arel.from("(#{from}) #{as}")
50
41
  end
51
42
 
52
43
  def translated_columns_get without_projections = false
53
44
  FromClauseTranslate::TranslatedColumnsBuilder.new(
54
- self, without_projections
45
+ self, @without_projections
55
46
  ).perform
56
47
  end
57
48
 
58
- private
59
-
60
49
  def perform_calculation operation, column_name
61
- if column_name && !@translated_extra_columns &&
62
- @klass.const_defined?(:TRANSLATED)
63
- @translated_extra_columns = [column_name]
64
- end
65
- super operation, column_name
50
+ return super operation, column_name if @without_projections
51
+ rel = spawn
52
+ rel.instance_variable_set(:@without_projections, true)
53
+ rel.add_translated_column column_name
54
+ rel.perform_calculation operation, column_name
66
55
  end
67
56
  end
68
57
 
@@ -1,3 +1,3 @@
1
1
  module FromClauseTranslate
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.2.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: from_clause_translate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Kushin