arel_extensions 1.2.12 → 1.2.13
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 +4 -4
 - data/lib/arel_extensions.rb +12 -1
 - data/lib/arel_extensions/nodes/case.rb +7 -1
 - data/lib/arel_extensions/version.rb +1 -1
 - data/lib/arel_extensions/visitors/sqlite.rb +0 -10
 - data/lib/arel_extensions/visitors/to_sql.rb +2 -2
 - data/test/visitors/test_to_sql.rb +7 -0
 - data/test/with_ar/all_agnostic_test.rb +1 -0
 - data/version_v1.rb +1 -1
 - data/version_v2.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d95996eb337a6f44206db8974a80f8811e4ae99e208dbb4653b8aaec8b5d5514
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: c471cedfab914493f46651a634ef422732e368dc9f62b94d0d26b16d6401dccf
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 149cb821e006982c7558cd19c5317a8363b7e6c75ba3f5907313667f381fe81933ac316ce307fbb6ecb04511cef0dd0a01dbc656e628bf99c701cbe8556e222d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 056a3f0a29ba48eff7615b6634c8a3e2538a755e735daafe4d0cc9acef357404ec1852ceafb2c3b76d265e3cfd616f0797d0abfce24209d1931dc8474b2d8844
         
     | 
    
        data/lib/arel_extensions.rb
    CHANGED
    
    | 
         @@ -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
         
     | 
| 
         @@ -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")
         
     | 
    
        data/version_v1.rb
    CHANGED
    
    
    
        data/version_v2.rb
    CHANGED
    
    
    
        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: 1.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.2.13
         
     | 
| 
       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- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2020-08-25 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: arel
         
     |