class Moped::Session::Context

@api private

Attributes

session[R]

Public Class Methods

new(session) click to toggle source
# File lib/moped/session/context.rb, line 9
def initialize(session)
  @session = session
end

Public Instance Methods

cluster() click to toggle source
# File lib/moped/session/context.rb, line 25
def cluster
  session.cluster
end
command(database, command) click to toggle source
# File lib/moped/session/context.rb, line 48
def command(database, command)
  options = consistency == :eventual ? { :flags => [:slave_ok] } : {}
  with_node do |node|
    node.command(database, command, options)
  end
end
consistency() click to toggle source
# File lib/moped/session/context.rb, line 21
def consistency
  session.consistency
end
get_more(*args) click to toggle source
# File lib/moped/session/context.rb, line 94
def get_more(*args)
  raise NotImplementedError, "#get_more cannot be called on Context; it must be called directly on a node"
end
insert(database, collection, documents, options = {}) click to toggle source
# File lib/moped/session/context.rb, line 55
def insert(database, collection, documents, options = {})
  with_node do |node|
    if safe?
      node.pipeline do
        node.insert(database, collection, documents, options)
        node.command(database, { getlasterror: 1 }.merge(safety))
      end
    else
      node.insert(database, collection, documents, options)
    end
  end
end
kill_cursors(*args) click to toggle source
# File lib/moped/session/context.rb, line 98
def kill_cursors(*args)
  raise NotImplementedError, "#kill_cursors cannot be called on Context; it must be called directly on a node"
end
login(database, username, password) click to toggle source
# File lib/moped/session/context.rb, line 29
def login(database, username, password)
  cluster.auth[database.to_s] = [username, password]
end
logout(database) click to toggle source
# File lib/moped/session/context.rb, line 33
def logout(database)
  cluster.auth.delete database.to_s
end
query(database, collection, selector, options = {}) click to toggle source
# File lib/moped/session/context.rb, line 37
def query(database, collection, selector, options = {})
  if consistency == :eventual
    options[:flags] ||= []
    options[:flags] |= [:slave_ok]
  end

  with_node do |node|
    node.query(database, collection, selector, options)
  end
end
remove(database, collection, selector, options = {}) click to toggle source
# File lib/moped/session/context.rb, line 81
def remove(database, collection, selector, options = {})
  with_node do |node|
    if safe?
      node.pipeline do
        node.remove(database, collection, selector, options)
        node.command(database, { getlasterror: 1 }.merge(safety))
      end
    else
      node.remove(database, collection, selector, options)
    end
  end
end
safe?() click to toggle source
# File lib/moped/session/context.rb, line 17
def safe?
  session.safe?
end
safety() click to toggle source
# File lib/moped/session/context.rb, line 13
def safety
  session.safety
end
update(database, collection, selector, change, options = {}) click to toggle source
# File lib/moped/session/context.rb, line 68
def update(database, collection, selector, change, options = {})
  with_node do |node|
    if safe?
      node.pipeline do
        node.update(database, collection, selector, change, options)
        node.command(database, { getlasterror: 1 }.merge(safety))
      end
    else
      node.update(database, collection, selector, change, options)
    end
  end
end
with_node() { |node| ... } click to toggle source
# File lib/moped/session/context.rb, line 102
def with_node
  if consistency == :eventual
    cluster.with_secondary do |node|
      yield node
    end
  else
    cluster.with_primary do |node|
      yield node
    end
  end
end