Sha256: 3b22b2bed5cf09a64bd2a6c820c451a5b49b8c4727134c24dc99b92b9fc1d411

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

safe_require 'postgres-pr/message', 'gem install postgres-pr'

##
# Midori Extension for Postgres Driver
# @attr [ Integer ] connected Connection Status
class Midori::Postgres
  attr_reader :connected

  # Init a Postgres Connection
  # @param [ Array ] args args of EM.connect
  def initialize(*args)
    @connected = false
    @db = EM.connect(*args, EM::P::Postgres3)
  end

  # Connect the Postgres server
  # @param [ String ] db_name database name
  # @param [ String ] username username
  # @param [ password ] password password
  # @return [ nil ] nil
  def connect(db_name, username, password)
    await(Promise.new(->(resolve, _reject) {
      @db.connect(db_name, username, password).callback do |status|
        @connected = status
        resolve.call(status)
      end
    }))
  end

  # Make SQL query
  # @param [ String ] sql sql query
  # @return [ Midori::Postgres::Result ] query result
  def query(sql)
    await(Promise.new(->(resolve, _reject) {
      begin
        @db.query(sql).callback do |status, result, errors|
          @connected = status
          resolve.call(Midori::Postgres::Result.new(result, errors))
        end
      end
    }))
  end
end

##
# Postgres Result for Midori Postgres Driver Extension
# @attr [ Array ] result result if success
# @attr [ Array ] errors exceptions met
class Midori::Postgres::Result
  attr_reader :result, :errors

  # Init a Postgres Result
  # @param [ Array ] result result if success
  # @param [ Array ] errors exceptions met
  def initialize(result, errors)
    @result = result
    @errors = errors
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
em-midori-0.1.7.1 lib/midori/extension/postgres.rb