arel_extensions 2.0.8 → 2.0.9

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: 5080e8422006270a6c69337931908b043c1c494679d453a8ea89328390e84174
4
- data.tar.gz: 9189ce88f62c39a385dc5b5fa55a021d8c7c2967d7025eb4710d1403ac9dc078
3
+ metadata.gz: 72685b8ade2abd10db2d50ecc780270dc78719a3de6d6c3f8557327156fe547f
4
+ data.tar.gz: cc3b63b40337dadd04db2cd6e4db0499998a4ac0b2fd66e0b725436023727b78
5
5
  SHA512:
6
- metadata.gz: f477cee1a8ce18be9346c1b10fc10b90e0cf28921f2dc518a67e49aba8dba771b73a0c2d822b2fd6336b4596c0684526f044b0d02d0b4c77792c765174d7d350
7
- data.tar.gz: 45da36b498e8c905e2d6793234fa2a094947e450a9a58e52d272ade8d63f474008d2bfc2ec674305224bc8650a9e55d3446211fb5f0258ad7a2bcada2a38e991
6
+ metadata.gz: 7b3deec07810ebb8d6b49da83b2c79066e1aeb298a868007ce8aba509767ca21fb9c9b4634407fa0dd5b97c58755096a208ffade5b3057847e89b61fbc68f94a
7
+ data.tar.gz: eb1908f418374e4cd5631e6d07116ec2f1bc8936dd7f113871985abe5e198ebc6b4955eb37b694e36c1c7991153444d7107b6a333c53fb1d1269ffa960dade91
@@ -36,7 +36,7 @@ class Arel::Nodes::Function
36
36
  include Arel::Expressions
37
37
  end
38
38
 
39
- if Arel::VERSION >= "7.1.0"
39
+ if Gem::Version.new(Arel::VERSION) >= Gem::Version.new("7.1.0")
40
40
  class Arel::Nodes::Case
41
41
  include Arel::Math
42
42
  include Arel::Expressions
@@ -183,3 +183,14 @@ class Arel::Table
183
183
  name.blank? ? self : Arel::Nodes::TableAlias.new(self,name)
184
184
  end
185
185
  end
186
+
187
+ class Arel::Nodes::TableAlias
188
+ def method_missing(*args)
189
+ met = args.shift.to_sym
190
+ if self.relation.respond_to?(met)
191
+ self.relation.send(met,args)
192
+ else
193
+ super
194
+ end
195
+ end
196
+ end
@@ -1,7 +1,11 @@
1
1
  module ArelExtensions
2
2
  module Nodes
3
- if Arel::VERSION < "7.1.0"
3
+ if Gem::Version.new(Arel::VERSION) < Gem::Version.new("7.1.0")
4
4
  class Case < Arel::Nodes::Node
5
+ include Arel::Expressions
6
+ include Arel::Math
7
+ include Arel::Predications
8
+ include Arel::OrderPredications
5
9
  attr_accessor :case, :conditions, :default
6
10
 
7
11
  def initialize expression = nil, default = nil
@@ -28,6 +32,8 @@ module ArelExtensions
28
32
 
29
33
  class ArelExtensions::Nodes::Case
30
34
  include Arel::Expressions
35
+ include Arel::Math
36
+ include Arel::Predications
31
37
  include Arel::OrderPredications
32
38
  include ArelExtensions::Math
33
39
  include ArelExtensions::Comparators
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.0.8".freeze
2
+ VERSION = "2.0.9".freeze
3
3
  end
@@ -364,16 +364,6 @@ module ArelExtensions
364
364
  collector
365
365
  end
366
366
 
367
-
368
- alias_method :old_visit_Arel_Nodes_SelectStatement, :visit_Arel_Nodes_SelectStatement
369
- def visit_Arel_Nodes_SelectStatement o, collector
370
- if !collector.value.blank? && o.limit.blank?
371
- o = o.dup
372
- o.orders = []
373
- end
374
- old_visit_Arel_Nodes_SelectStatement(o,collector)
375
- end
376
-
377
367
  alias_method :old_visit_Arel_Nodes_As, :visit_Arel_Nodes_As
378
368
  def visit_Arel_Nodes_As o, collector
379
369
  if o.left.is_a?(Arel::Nodes::Binary)
@@ -624,7 +624,7 @@ module ArelExtensions
624
624
 
625
625
  def visit_ArelExtensions_Nodes_JsonGroup o, collector
626
626
  if o.as_array
627
- res = Arel::Nodes.build_quoted('[') + (o.orders ? o.dict.group_concat(', ',o.orders) : o.dict.group_concat(', ')) + ']'
627
+ res = Arel::Nodes.build_quoted('[') + (o.orders ? o.dict.group_concat(', ', order: Array(o.orders)) : o.dict.group_concat(', ')).coalesce('') + ']'
628
628
  collector = visit res, collector
629
629
  else
630
630
  res = Arel::Nodes.build_quoted('{')
@@ -639,7 +639,7 @@ module ArelExtensions
639
639
  else
640
640
  kv += v
641
641
  end
642
- res = res + kv.group_concat(', ',orders)
642
+ res = res + kv.group_concat(', ', order: Array(orders)).coalesce('')
643
643
  end
644
644
  res = res + '}'
645
645
  collector = visit res, collector
@@ -463,6 +463,13 @@ module ArelExtensions
463
463
  .must_be_like %{(LOCATE('test', "users"."name") + 1) ASC}
464
464
  end
465
465
 
466
+ it "should be possible to call Table function on TableAlias" do
467
+ t = @table
468
+ a = t.alias("aliased_users")
469
+ _(compile(a.join(t).join_sources))
470
+ .must_be_like %{INNER JOIN \"users\"}
471
+ end
472
+
466
473
  describe "logical functions" do
467
474
 
468
475
  it "should know about truth" do
@@ -581,6 +581,7 @@ module ArelExtensions
581
581
  # Case clause
582
582
  def test_case
583
583
  assert_equal 4, User.find_by_sql(@ut.project(@score.when(20.16).then(1).else(0).as('score_bin')).to_sql).sum(&:score_bin)
584
+ assert_equal 4, User.where(@score.when(20.16).then(1).else(0).eq(1)).count
584
585
  assert_equal 2, t(@arthur, @score.when(65.62,1).else(0)+1)
585
586
  assert_equal 0, t(@arthur, @score.when(65.62,1).else(0)-1)
586
587
  assert_equal "11", t(@arthur, @score.when(65.62).then("1").else("0")+"1")
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "1.2.12".freeze
2
+ VERSION = "1.2.13".freeze
3
3
  end
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.0.8".freeze
2
+ VERSION = "2.0.9".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.8
4
+ version: 2.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-04-30 00:00:00.000000000 Z
13
+ date: 2020-08-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord