arsi 1.0.0 → 1.1.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 +4 -4
- data/lib/arsi/arel_tree_manager.rb +4 -5
- data/lib/arsi/persistence.rb +26 -0
- data/lib/arsi/relation.rb +0 -4
- data/lib/arsi/version.rb +1 -1
- data/lib/arsi.rb +9 -5
- metadata +12 -25
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b528e9d79cdc0d21f70a93d39d631f2ad72f239eda03ea6d40a249ba85f00d81
         | 
| 4 | 
            +
              data.tar.gz: 9fa5461a0c90bc0efbc3a85d2adaf913ca147425b83e378ed0c34c7ecf829da5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f5646db280bf628a6e75a1dffa57794a64a2ffbd2ff18942b04aec3fa35eaa9c7b8ccf4040078295404542d5c19fc391d01bc4ba1ab7af058c85cb3cddf75bcb
         | 
| 7 | 
            +
              data.tar.gz: be068e843094617e04279a4917e802a047f88f6ada372604a1e5c2dee1d7c7b790c65a71662c56ea817aeaf74602234182254908615208c49de008743de4b237
         | 
| @@ -2,13 +2,12 @@ require 'arel' | |
| 2 2 |  | 
| 3 3 | 
             
            module Arsi
         | 
| 4 4 | 
             
              module ArelTreeManager
         | 
| 5 | 
            -
                # This is from Arel::SelectManager  | 
| 6 | 
            -
                #  | 
| 5 | 
            +
                # This is inspired from Arel::SelectManager, a subclass of Arel::TreeManager
         | 
| 6 | 
            +
                # just like Arel::UpdateManager and Arel::DeleteManager.
         | 
| 7 7 | 
             
                def where_sql(engine = ::Arel::Table.engine)
         | 
| 8 | 
            -
                  return if @ | 
| 8 | 
            +
                  return if @ast.wheres.empty?
         | 
| 9 9 |  | 
| 10 | 
            -
                   | 
| 11 | 
            -
                  ::Arel::Nodes::SqlLiteral.new viz.accept(@ctx, ::Arel::Collectors::SQLString.new).value
         | 
| 10 | 
            +
                  ::Arel::Nodes::SqlLiteral.new("WHERE #{::Arel::Nodes::And.new(@ast.wheres).to_sql(engine)}")
         | 
| 12 11 | 
             
                end
         | 
| 13 12 | 
             
              end
         | 
| 14 13 | 
             
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            module Arsi
         | 
| 2 | 
            +
              module Persistence
         | 
| 3 | 
            +
                def self.prepended(klass)
         | 
| 4 | 
            +
                  klass.singleton_class.prepend(ClassMethods)
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                module ClassMethods
         | 
| 8 | 
            +
                  def _update_record(*)
         | 
| 9 | 
            +
                    with_relation_in_connection { super }
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def _delete_record(*)
         | 
| 13 | 
            +
                    with_relation_in_connection { super }
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  private
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def with_relation_in_connection
         | 
| 19 | 
            +
                    connection.arsi_relation = self.unscoped
         | 
| 20 | 
            +
                    yield
         | 
| 21 | 
            +
                  ensure
         | 
| 22 | 
            +
                    connection.arsi_relation = nil
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
    
        data/lib/arsi/relation.rb
    CHANGED
    
    
    
        data/lib/arsi/version.rb
    CHANGED
    
    
    
        data/lib/arsi.rb
    CHANGED
    
    | @@ -1,13 +1,16 @@ | |
| 1 1 | 
             
            require 'arsi/arel_tree_manager'
         | 
| 2 2 | 
             
            require 'arsi/mysql2_adapter'
         | 
| 3 | 
            +
            require 'arsi/persistence'
         | 
| 3 4 | 
             
            require 'arsi/relation'
         | 
| 4 5 | 
             
            require 'active_record'
         | 
| 5 6 | 
             
            require 'active_record/connection_adapters/mysql2_adapter'
         | 
| 6 7 |  | 
| 7 8 | 
             
            module Arsi
         | 
| 8 9 | 
             
              class UnscopedSQL < StandardError; end
         | 
| 9 | 
            -
              Arel:: | 
| 10 | 
            +
              Arel::UpdateManager.include(ArelTreeManager)
         | 
| 11 | 
            +
              Arel::DeleteManager.include(ArelTreeManager)
         | 
| 10 12 | 
             
              ActiveRecord::ConnectionAdapters::Mysql2Adapter.prepend(Mysql2Adapter)
         | 
| 13 | 
            +
              ActiveRecord::Base.prepend(Persistence)
         | 
| 11 14 | 
             
              ActiveRecord::Relation.prepend(Relation)
         | 
| 12 15 | 
             
              ActiveRecord::Querying.delegate(:without_arsi, :to => :relation)
         | 
| 13 16 |  | 
| @@ -52,10 +55,11 @@ module Arsi | |
| 52 55 | 
             
                private
         | 
| 53 56 |  | 
| 54 57 | 
             
                def arel_where_sql(arel, relation)
         | 
| 55 | 
            -
                   | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 58 | 
            +
                  if relation.nil?
         | 
| 59 | 
            +
                    arel.where_sql
         | 
| 60 | 
            +
                  else
         | 
| 61 | 
            +
                    arel.where_sql(relation.model)
         | 
| 62 | 
            +
                  end
         | 
| 59 63 | 
             
                end
         | 
| 60 64 |  | 
| 61 65 | 
             
                def sql_check!(sql, relation)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,29 +1,15 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: arsi
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Christopher Kintner
         | 
| 8 | 
            -
            autorequire:
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2023-01-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name: arel
         | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - ">="
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '0'
         | 
| 20 | 
            -
              type: :runtime
         | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            -
                requirements:
         | 
| 24 | 
            -
                - - ">="
         | 
| 25 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '0'
         | 
| 27 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 14 | 
             
              name: mysql2
         | 
| 29 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -44,20 +30,20 @@ dependencies: | |
| 44 30 | 
             
                requirements:
         | 
| 45 31 | 
             
                - - ">="
         | 
| 46 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 5. | 
| 33 | 
            +
                    version: 5.2.0
         | 
| 48 34 | 
             
                - - "<"
         | 
| 49 35 | 
             
                  - !ruby/object:Gem::Version
         | 
| 50 | 
            -
                    version: ' | 
| 36 | 
            +
                    version: '7.1'
         | 
| 51 37 | 
             
              type: :runtime
         | 
| 52 38 | 
             
              prerelease: false
         | 
| 53 39 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 54 40 | 
             
                requirements:
         | 
| 55 41 | 
             
                - - ">="
         | 
| 56 42 | 
             
                  - !ruby/object:Gem::Version
         | 
| 57 | 
            -
                    version: 5. | 
| 43 | 
            +
                    version: 5.2.0
         | 
| 58 44 | 
             
                - - "<"
         | 
| 59 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 | 
            -
                    version: ' | 
| 46 | 
            +
                    version: '7.1'
         | 
| 61 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 62 48 | 
             
              name: bump
         | 
| 63 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -139,13 +125,14 @@ files: | |
| 139 125 | 
             
            - lib/arsi.rb
         | 
| 140 126 | 
             
            - lib/arsi/arel_tree_manager.rb
         | 
| 141 127 | 
             
            - lib/arsi/mysql2_adapter.rb
         | 
| 128 | 
            +
            - lib/arsi/persistence.rb
         | 
| 142 129 | 
             
            - lib/arsi/relation.rb
         | 
| 143 130 | 
             
            - lib/arsi/version.rb
         | 
| 144 131 | 
             
            homepage: https://github.com/zendesk/arsi
         | 
| 145 132 | 
             
            licenses:
         | 
| 146 133 | 
             
            - Apache License Version 2.0
         | 
| 147 134 | 
             
            metadata: {}
         | 
| 148 | 
            -
            post_install_message:
         | 
| 135 | 
            +
            post_install_message: 
         | 
| 149 136 | 
             
            rdoc_options: []
         | 
| 150 137 | 
             
            require_paths:
         | 
| 151 138 | 
             
            - lib
         | 
| @@ -153,15 +140,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 153 140 | 
             
              requirements:
         | 
| 154 141 | 
             
              - - ">="
         | 
| 155 142 | 
             
                - !ruby/object:Gem::Version
         | 
| 156 | 
            -
                  version: 2. | 
| 143 | 
            +
                  version: 2.7.0
         | 
| 157 144 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 158 145 | 
             
              requirements:
         | 
| 159 146 | 
             
              - - ">="
         | 
| 160 147 | 
             
                - !ruby/object:Gem::Version
         | 
| 161 148 | 
             
                  version: '0'
         | 
| 162 149 | 
             
            requirements: []
         | 
| 163 | 
            -
            rubygems_version: 3.3. | 
| 164 | 
            -
            signing_key:
         | 
| 150 | 
            +
            rubygems_version: 3.0.3.1
         | 
| 151 | 
            +
            signing_key: 
         | 
| 165 152 | 
             
            specification_version: 4
         | 
| 166 153 | 
             
            summary: ActiveRecord SQL Inspector
         | 
| 167 154 | 
             
            test_files: []
         |