Sha256: f594372a814d6c0aa079b5f3c802621738f1acb9daa971787ece00d7be26126a

Contents?: true

Size: 1.38 KB

Versions: 13

Compression:

Stored size: 1.38 KB

Contents

require 'openbase'

module Sequel
  module OpenBase
    class Database < Sequel::Database
      set_adapter_scheme :openbase
      
      def connect(server)
        opts = server_opts(server)
        OpenBase.new(
          opts[:database],
          opts[:host] || 'localhost',
          opts[:user],
          opts[:password]
        )
      end
      
      def execute(sql, opts={})
        synchronize(opts[:server]) do |conn|
          r = log_yield(sql){conn.execute(sql)}
          yield(r) if block_given?
          r
        end
      end
      alias_method :do, :execute

      private

      def disconnect_connection(c)
        c.disconnect
      end
    end
    
    class Dataset < Sequel::Dataset
      SELECT_CLAUSE_METHODS = clause_methods(:select, %w'select distinct columns from join where group having compounds order limit')

      Database::DatasetClass = self
      
      def fetch_rows(sql)
        execute(sql) do |result|
          begin
            @columns = result.column_infos.map{|c| output_identifier(c.name)}
            result.each do |r|
              row = {}
              r.each_with_index {|v, i| row[@columns[i]] = v}
              yield row
            end
          ensure
            # result.close
          end
        end
        self
      end
      
      private
      
      def select_clause_methods
        SELECT_CLAUSE_METHODS
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
sequel-3.40.0 lib/sequel/adapters/openbase.rb
sequel-3.39.0 lib/sequel/adapters/openbase.rb
sequel-3.38.0 lib/sequel/adapters/openbase.rb
sequel-3.37.0 lib/sequel/adapters/openbase.rb
sequel-3.36.1 lib/sequel/adapters/openbase.rb
sequel-3.36.0 lib/sequel/adapters/openbase.rb
sequel-3.35.0 lib/sequel/adapters/openbase.rb
sequel-3.34.1 lib/sequel/adapters/openbase.rb
sequel-3.34.0 lib/sequel/adapters/openbase.rb
sequel-3.33.0 lib/sequel/adapters/openbase.rb
sequel-3.32.0 lib/sequel/adapters/openbase.rb
sequel-3.31.0 lib/sequel/adapters/openbase.rb
sequel-3.30.0 lib/sequel/adapters/openbase.rb