from_clause_translate 0.2.0 → 0.2.1

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