Sha256: eff43847882dd7fb3a4c7ab4ae19d335e327faf36a6a163e12127cb4d5ae3e1a
Contents?: true
Size: 1.04 KB
Versions: 3
Compression:
Stored size: 1.04 KB
Contents
require 'set' require 'forwardable' require 'mongo' module Flipper module Adapters class Mongo extend Forwardable def initialize(collection) @collection = collection @update_options = {:safe => true, :upsert => true} end def read(key) find_one key end def write(key, value) update key, {'$set' => {'v' => value}} end def delete(key) @collection.remove criteria(key) end def set_members(key) (find_one(key) || Set.new).to_set end def set_add(key, value) update key, {'$addToSet' => {'v' => value}} end def set_delete(key, value) update key, {'$pull' => {'v' => value}} end private def find_one(key) if (doc = @collection.find_one(criteria(key))) doc['v'] end end def update(key, updates) @collection.update criteria(key), updates, @update_options end def criteria(key) {:_id => key} end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
flipper-mongo-0.2.2 | lib/flipper/adapters/mongo.rb |
flipper-mongo-0.2.1 | lib/flipper/adapters/mongo.rb |
flipper-mongo-0.2.0 | lib/flipper/adapters/mongo.rb |