pg_conn 0.2.1 → 0.3.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/TODO +2 -0
- data/lib/pg_conn/version.rb +1 -1
- data/lib/pg_conn.rb +53 -34
- data/pg_conn.gemspec +1 -23
- metadata +17 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8b90e77eda48e35d4577bfb9bc2f6dd553054342d22fabaec9931639a765c1eb
         | 
| 4 | 
            +
              data.tar.gz: 1fca73a204f709583e67d6b035f7d48d896b63164a8e6b06a7133fbb1c038eb2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 22b8ba44cd9b8aea11291977ea85d048f57b92627c9c67e2e306b9a398842f0af7b07b7d04c7cae86c5e0d8496904ef7a471730342ee5cc7aa476099d7f2bead
         | 
| 7 | 
            +
              data.tar.gz: 215a4d41c900604a0ee10cbf87a2d9cd6eeed676a953372073084b1c43c493fa7246084dc93c4f6e321693f84cb83ec35944a14e15579347341ad90c147eae42
         | 
    
        data/TODO
    CHANGED
    
    
    
        data/lib/pg_conn/version.rb
    CHANGED
    
    
    
        data/lib/pg_conn.rb
    CHANGED
    
    | @@ -19,7 +19,7 @@ module PgConn | |
| 19 19 | 
             
              def self.===(element) element.is_a?(PgConn::Connection) or super end
         | 
| 20 20 |  | 
| 21 21 | 
             
              # Returns a PgConn::Connection object (aka. a PgConn object). It's arguments
         | 
| 22 | 
            -
              # can be an existing connection that will just be returned  | 
| 22 | 
            +
              # can be an existing connection that will just be returned or a set of
         | 
| 23 23 | 
             
              # PgConn::Connection#initialize arguments that will be used to create a new
         | 
| 24 24 | 
             
              # PgConn::Connection object
         | 
| 25 25 | 
             
              def self.ensure(*args)
         | 
| @@ -66,15 +66,16 @@ module PgConn | |
| 66 66 |  | 
| 67 67 |  | 
| 68 68 |  | 
| 69 | 
            -
                #  | 
| 70 | 
            -
                # variations:
         | 
| 71 | 
            -
                #
         | 
| 69 | 
            +
                # :call-seq:
         | 
| 72 70 | 
             
                #     initialize(dbname = nil, user = nil, field_name_class: Symbol)
         | 
| 73 71 | 
             
                #     initialize(connection_hash, field_name_class: Symbol)
         | 
| 74 72 | 
             
                #     initialize(connection_string, field_name_class: Symbol)
         | 
| 75 73 | 
             
                #     initialize(host, port, dbname, user, password, field_name_class: Symbol)
         | 
| 74 | 
            +
                #     initialize(array, field_name_class: Symbol)
         | 
| 76 75 | 
             
                #     initialize(pg_connection_object)
         | 
| 77 76 | 
             
                #
         | 
| 77 | 
            +
                # Initialize a connection object and connect to the database
         | 
| 78 | 
            +
                #
         | 
| 78 79 | 
             
                # The possible keys of the connection hash are :host, :port, :dbname, :user,
         | 
| 79 80 | 
             
                # and :password. The connection string can either be a space-separated list
         | 
| 80 81 | 
             
                # of <key>=<value> pairs with the same keys as the hash, or a URI with the
         | 
| @@ -84,6 +85,11 @@ module PgConn | |
| 84 85 | 
             
                # Symbol (the default) or String. The :timestamp option is used
         | 
| 85 86 | 
             
                # internally to set the timestamp for transactions
         | 
| 86 87 | 
             
                #
         | 
| 88 | 
            +
                # If given an array argument, PgConn will not connect to the database and
         | 
| 89 | 
            +
                # instead write its commands to the array. In this case, methods extracting
         | 
| 90 | 
            +
                # values from the database (eg. #value) will return nil or raise an
         | 
| 91 | 
            +
                # exception
         | 
| 92 | 
            +
                #
         | 
| 87 93 | 
             
                # The last variant is used to establish a PgConn from an existing
         | 
| 88 94 | 
             
                # connection. It doesn't change the connection settings and is not
         | 
| 89 95 | 
             
                # recommended except in cases where you want to piggyback on an existing
         | 
| @@ -125,6 +131,9 @@ module PgConn | |
| 125 131 | 
             
                            end
         | 
| 126 132 | 
             
                          when Hash
         | 
| 127 133 | 
             
                            make_connection **arg
         | 
| 134 | 
            +
                          when Array
         | 
| 135 | 
            +
                            @pg_commands = arg
         | 
| 136 | 
            +
                            nil
         | 
| 128 137 | 
             
                        else
         | 
| 129 138 | 
             
                          raise Error, "Illegal argument type: #{arg.class}"
         | 
| 130 139 | 
             
                        end
         | 
| @@ -136,7 +145,7 @@ module PgConn | |
| 136 145 | 
             
                        raise Error, "Illegal number of parameters: #{args.size}"
         | 
| 137 146 | 
             
                      end
         | 
| 138 147 |  | 
| 139 | 
            -
                  if !using_existing_connection
         | 
| 148 | 
            +
                  if @pg_connection && !using_existing_connection
         | 
| 140 149 | 
             
                    # Auto-convert to ruby types
         | 
| 141 150 | 
             
                    type_map = PG::BasicTypeMapForResults.new(@pg_connection) 
         | 
| 142 151 |  | 
| @@ -170,7 +179,7 @@ module PgConn | |
| 170 179 |  | 
| 171 180 | 
             
                # Close the database connection
         | 
| 172 181 | 
             
                def terminate()
         | 
| 173 | 
            -
                  @pg_connection.close if !@pg_connection.finished? 
         | 
| 182 | 
            +
                  @pg_connection.close if @pg_connection && !@pg_connection.finished? 
         | 
| 174 183 | 
             
                end
         | 
| 175 184 |  | 
| 176 185 | 
             
                def self.new(*args, &block)
         | 
| @@ -178,7 +187,7 @@ module PgConn | |
| 178 187 | 
             
                    begin
         | 
| 179 188 | 
             
                      object = Connection.allocate
         | 
| 180 189 | 
             
                      object.send(:initialize, *args)
         | 
| 181 | 
            -
                      yield(object) if object.pg_connection
         | 
| 190 | 
            +
                      yield(object) # if object.pg_connection
         | 
| 182 191 | 
             
                    ensure
         | 
| 183 192 | 
             
                      object.terminate if object.pg_connection
         | 
| 184 193 | 
             
                    end
         | 
| @@ -187,9 +196,6 @@ module PgConn | |
| 187 196 | 
             
                  end
         | 
| 188 197 | 
             
                end
         | 
| 189 198 |  | 
| 190 | 
            -
            #   # Return true iff the query returns exactly one value
         | 
| 191 | 
            -
            #   def exist?(query) count(query) == 1 end
         | 
| 192 | 
            -
             | 
| 193 199 | 
             
                # :call-seq:
         | 
| 194 200 | 
             
                #   exist?(query)
         | 
| 195 201 | 
             
                #   exist?(table, id)
         | 
| @@ -459,7 +465,7 @@ module PgConn | |
| 459 465 | 
             
                  elsif r.nfields == 1
         | 
| 460 466 | 
             
                    r.column_values(0)
         | 
| 461 467 | 
             
                  else
         | 
| 462 | 
            -
                    r | 
| 468 | 
            +
                    r&.values
         | 
| 463 469 | 
             
                  end
         | 
| 464 470 | 
             
                end
         | 
| 465 471 |  | 
| @@ -489,7 +495,11 @@ module PgConn | |
| 489 495 | 
             
                #
         | 
| 490 496 | 
             
                # TODO: Handle postgres exceptions wrt transaction state and stack
         | 
| 491 497 | 
             
                def execute(sql, fail: true, silent: false)
         | 
| 492 | 
            -
                   | 
| 498 | 
            +
                  if @pg_connection
         | 
| 499 | 
            +
                    pg_exec(sql, fail: fail, silent: silent)&.cmd_tuples
         | 
| 500 | 
            +
                  else
         | 
| 501 | 
            +
                    pg_exec(sql, fail: fail, silent: silent)
         | 
| 502 | 
            +
                  end
         | 
| 493 503 | 
             
                end
         | 
| 494 504 |  | 
| 495 505 | 
             
                # Switch user to the given user and execute the statement before swithcing
         | 
| @@ -534,7 +544,7 @@ module PgConn | |
| 534 544 | 
             
                  else
         | 
| 535 545 | 
             
                    @savepoints = []
         | 
| 536 546 | 
             
                    pg_exec("begin")
         | 
| 537 | 
            -
                    @timestamp = pg_exec("select current_timestamp").values[0][0]
         | 
| 547 | 
            +
                    @timestamp = pg_exec("select current_timestamp").values[0][0] if @pg_connection
         | 
| 538 548 | 
             
                  end
         | 
| 539 549 | 
             
                end
         | 
| 540 550 |  | 
| @@ -626,30 +636,39 @@ module PgConn | |
| 626 636 | 
             
                #
         | 
| 627 637 | 
             
                # TODO: Fix silent by not handling exceptions
         | 
| 628 638 | 
             
                def pg_exec(arg, fail: true, silent: false)
         | 
| 629 | 
            -
                   | 
| 630 | 
            -
                     | 
| 631 | 
            -
             | 
| 632 | 
            -
                       | 
| 633 | 
            -
             | 
| 634 | 
            -
             | 
| 635 | 
            -
             | 
| 636 | 
            -
                       | 
| 637 | 
            -
             | 
| 638 | 
            -
             | 
| 639 | 
            -
             | 
| 640 | 
            -
             | 
| 641 | 
            -
             | 
| 642 | 
            -
             | 
| 643 | 
            -
                     | 
| 644 | 
            -
                      if  | 
| 645 | 
            -
                         | 
| 646 | 
            -
             | 
| 647 | 
            -
             | 
| 639 | 
            +
                  if @pg_connection
         | 
| 640 | 
            +
                    begin
         | 
| 641 | 
            +
                      last_stmt = nil # To make the current SQL statement visible to the rescue clause
         | 
| 642 | 
            +
                      if arg.is_a?(String)
         | 
| 643 | 
            +
                        return nil if arg == ""
         | 
| 644 | 
            +
                        last_stmt = arg
         | 
| 645 | 
            +
                        @pg_connection.exec(last_stmt)
         | 
| 646 | 
            +
                      else
         | 
| 647 | 
            +
                        stmts = arg.flatten.compact
         | 
| 648 | 
            +
                        return nil if stmts.empty?
         | 
| 649 | 
            +
                        last_stmt = stmts.last
         | 
| 650 | 
            +
                        @pg_connection.exec(stmts.join(";\n"))
         | 
| 651 | 
            +
                      end
         | 
| 652 | 
            +
                      
         | 
| 653 | 
            +
                    rescue PG::Error => ex
         | 
| 654 | 
            +
                      if fail
         | 
| 655 | 
            +
                        if !silent # FIXME Why do we handle this? 
         | 
| 656 | 
            +
                          $stderr.puts arg
         | 
| 657 | 
            +
                          $stderr.puts ex.message
         | 
| 658 | 
            +
                          $stderr.flush
         | 
| 659 | 
            +
                        end
         | 
| 660 | 
            +
                        raise
         | 
| 661 | 
            +
                      else
         | 
| 662 | 
            +
                        return nil
         | 
| 648 663 | 
             
                      end
         | 
| 649 | 
            -
             | 
| 664 | 
            +
                    end
         | 
| 665 | 
            +
                  else # @pg_commands is defined
         | 
| 666 | 
            +
                    if arg.is_a?(String)
         | 
| 667 | 
            +
                      @pg_commands << arg if arg != ""
         | 
| 650 668 | 
             
                    else
         | 
| 651 | 
            -
                       | 
| 669 | 
            +
                      @pg_commands.concat(arg)
         | 
| 652 670 | 
             
                    end
         | 
| 671 | 
            +
                    nil
         | 
| 653 672 | 
             
                  end
         | 
| 654 673 | 
             
                end
         | 
| 655 674 |  | 
    
        data/pg_conn.gemspec
    CHANGED
    
    | @@ -13,7 +13,6 @@ Gem::Specification.new do |spec| | |
| 13 13 | 
             
              spec.homepage      = "http://www.nowhere.com/"
         | 
| 14 14 | 
             
              spec.required_ruby_version = ">= 2.4.0"
         | 
| 15 15 |  | 
| 16 | 
            -
             | 
| 17 16 | 
             
              spec.metadata["homepage_uri"] = spec.homepage
         | 
| 18 17 |  | 
| 19 18 | 
             
              # Specify which files should be added to the gem when it is released.
         | 
| @@ -27,28 +26,7 @@ Gem::Specification.new do |spec| | |
| 27 26 | 
             
              spec.executables   = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
         | 
| 28 27 | 
             
              spec.require_paths = ["lib"]
         | 
| 29 28 |  | 
| 30 | 
            -
              # Uncomment to register a new dependency of your gem
         | 
| 31 | 
            -
              # spec.add_dependency "example-gem", "~> 1.0"
         | 
| 32 | 
            -
             | 
| 33 | 
            -
              # For more information and examples about making a new gem, checkout our
         | 
| 34 | 
            -
              # guide at: https://bundler.io/guides/creating_gem.html
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              # Add your production dependencies here
         | 
| 37 | 
            -
              # spec.add_dependency GEM [, VERSION]
         | 
| 38 29 | 
             
              spec.add_dependency "pg"
         | 
| 39 30 |  | 
| 40 | 
            -
               | 
| 41 | 
            -
              # spec.add_development_dependency GEM [, VERSION]
         | 
| 42 | 
            -
             | 
| 43 | 
            -
              # Also un-comment in spec/spec_helper to use simplecov
         | 
| 44 | 
            -
              # spec.add_development_dependency "simplecov"
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              # In development mode override load paths for gems whose source are located
         | 
| 47 | 
            -
              # as siblings of this project directory
         | 
| 48 | 
            -
              if File.directory?("#{__dir__}/.git")
         | 
| 49 | 
            -
                local_projects = Dir["../*"].select { |path| 
         | 
| 50 | 
            -
                  File.directory?(path) && File.exist?("#{path}/Gemfile")
         | 
| 51 | 
            -
                }.map { |relpath| "#{File.absolute_path(relpath)}/lib" }
         | 
| 52 | 
            -
                $LOAD_PATH.unshift *local_projects
         | 
| 53 | 
            -
              end
         | 
| 31 | 
            +
              spec.add_development_dependency "simplecov"
         | 
| 54 32 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: pg_conn
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Claus Rasmussen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-03-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: pg
         | 
| @@ -24,6 +24,20 @@ dependencies: | |
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: simplecov
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 27 41 | 
             
            description: Gem pg_conn
         | 
| 28 42 | 
             
            email:
         | 
| 29 43 | 
             
            - claus.l.rasmussen@gmail.com
         | 
| @@ -64,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 64 78 | 
             
                - !ruby/object:Gem::Version
         | 
| 65 79 | 
             
                  version: '0'
         | 
| 66 80 | 
             
            requirements: []
         | 
| 67 | 
            -
            rubygems_version: 3. | 
| 81 | 
            +
            rubygems_version: 3.1.4
         | 
| 68 82 | 
             
            signing_key: 
         | 
| 69 83 | 
             
            specification_version: 4
         | 
| 70 84 | 
             
            summary: Gem pg_conn
         |