from_clause_translate 0.2.1 → 0.2.2

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: 8dd3c42b4a4d39f887365fcd181438221a2a5d67f7582e6da06ee1349e8035e8
4
- data.tar.gz: b54e431c490c120a93be7c4ac714d6f47c972cea35aac7ad38508f892f18d4dd
3
+ metadata.gz: 6047a9893a48d5c6dd9de7a79a54626a24ff68ee3dc45839de7af7c726408e55
4
+ data.tar.gz: f18f6a36db802341261bd87ea818c1e87cf2baa237ecc8c42f67ee5c95af3302
5
5
  SHA512:
6
- metadata.gz: de67e993ee641c3c6e1eee55b211be68d2391097dac411aaa2240ace9068664ac7b80009754ee3f785eb0f1bf3075e3eb8cbc1f5aeb00a75fe3319d3cdc5eaa8
7
- data.tar.gz: 97a3d308c290712116f608470e20d0f185ebfefcbc00e182d9eb22e7158d03bfc176c346feba1c18102ef937b336554a6b23aa776815ce5b63349450bcbd8214
6
+ metadata.gz: 73ceb06c2144d06142da1b537a2e7762174801488685e53ba900bfa27b78395cedf6c509ec6d151b82b96097d85e476a20ff66fd22021df55b9d0cd7942bd759
7
+ data.tar.gz: 7ca67fdbdb2362ce6375ebe762aaa490abdf9e5c1762ef524ba8d02d6c7260afac19dedb1c9cd200427203a9acd86e8e5bd0c2e1a3f24ef276a8c927d7b68d33
@@ -24,7 +24,7 @@ module ActiveRecord::Relation::Extended
24
24
 
25
25
  @arel ||= build_arel nil
26
26
 
27
- columns = translated_columns_get
27
+ columns = translated_columns_build
28
28
  return unless columns
29
29
 
30
30
  if @values[:joins]
@@ -40,14 +40,15 @@ module ActiveRecord::Relation::Extended
40
40
  @arel.from("(#{from}) #{as}")
41
41
  end
42
42
 
43
- def translated_columns_get without_projections = false
43
+ def translated_columns_build
44
44
  FromClauseTranslate::TranslatedColumnsBuilder.new(
45
- self, @without_projections
45
+ self, @klass, @without_projections
46
46
  ).perform
47
47
  end
48
48
 
49
49
  def perform_calculation operation, column_name
50
50
  return super operation, column_name if @without_projections
51
+
51
52
  rel = spawn
52
53
  rel.instance_variable_set(:@without_projections, true)
53
54
  rel.add_translated_column column_name
@@ -1,7 +1,7 @@
1
1
  class FromClauseTranslate::TranslatedColumnsBuilder
2
- def initialize relation, without_projections
2
+ def initialize relation, klass, without_projections
3
3
  @relation = relation
4
- @klass = relation.instance_variable_get :@klass
4
+ @klass = klass
5
5
  @arel = relation.arel
6
6
  @without_projections = without_projections
7
7
  @columns = []
@@ -9,10 +9,11 @@ class FromClauseTranslate::TranslatedColumnsBuilder
9
9
  end
10
10
 
11
11
  def perform
12
+ @skip_translated = []
12
13
  add_translated_columns_from_values
13
14
  add_translated_columns_from_projections
14
15
  add_translated_columns_from_cores
15
- add_translated_colunms_from_orders
16
+ add_translated_columns_from_orders
16
17
 
17
18
  @columns if @has_translated
18
19
  end
@@ -23,10 +24,11 @@ class FromClauseTranslate::TranslatedColumnsBuilder
23
24
  translated = @relation.instance_variable_get(:@values)[:translated]
24
25
  return unless translated
25
26
 
27
+ @has_translated = true
26
28
  translated.each do |column|
27
29
  if column.is_a? Hash
28
- @has_translated = true
29
30
  column.each do |key, value|
31
+ @skip_translated << key.to_s
30
32
  @columns << "#{value} AS #{key}"
31
33
  end
32
34
  elsif (selection = translated_selection(column))
@@ -51,6 +53,8 @@ class FromClauseTranslate::TranslatedColumnsBuilder
51
53
  column = column.to_s
52
54
 
53
55
  name = column.first == '"' ? column[1...-1] : column
56
+ return if @skip_translated.include? name
57
+
54
58
  selection = translated_selection name
55
59
  return column unless selection
56
60
 
@@ -88,7 +92,7 @@ class FromClauseTranslate::TranslatedColumnsBuilder
88
92
  end
89
93
  end
90
94
 
91
- def add_translated_colunms_from_orders
95
+ def add_translated_columns_from_orders
92
96
  @arel.ast.orders.each do |name|
93
97
  name = name.respond_to?(:expr) ? name.expr.name : name.to_sym
94
98
  selection = translated_selection name
@@ -1,3 +1,3 @@
1
1
  module FromClauseTranslate
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.2'.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.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Kushin