require 'moped' module Jamnagar module Adapters class MongoAdapter < Adapter def self.driver @@driver ||= Moped::Session.new(["127.0.0.1:27017"]) end def initialize(driver=nil, database="test", collection="catchall") @driver = driver || Jamnagar::Adapters::MongoAdapter.driver @driver.use database @collection = collection end def store(key, value) @driver.with(safe: { wtimeout: 5 }) do |_session| _session[@collection.to_sym].insert(value) end end def get(key) @driver.with(safe: { wtimeout: 5 }) do |_session| _session[@collection.to_sym].find("_id" => key).first end end def find(params={}) @driver.with(safe: { wtimeout: 5 }) do |_session| _session[@collection.to_sym].find(params) end end def find_first(params={}) @driver.with(safe: { wtimeout: 5 }) do |_session| _session[@collection.to_sym].find(params).limit(1).first end end def update(query={}, updates={}) @driver.with(safe: { wtimeout: 5 }) do |_session| _session[@collection.to_sym].find(query).update(updates) end end def find_and_modify(params={}) @driver.with(safe: { wtimeout: 5 }) do |_session| _session[@collection.to_sym].find(params[:query]).update(params[:update]) end end end end end