class Hikki::Adapters::MongoCollection
Attributes
connection[R]
db[R]
uuid_generator[R]
Public Class Methods
new(collection, connection, db, uuid_generator)
click to toggle source
Calls superclass method
# File lib/hikki/adapters/mongo_collection.rb, line 6 def initialize(collection, connection, db, uuid_generator) super(collection) @connection = connection @db = db @uuid_generator = uuid_generator end
Public Instance Methods
all(options={})
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 29 def all(options={}) options = normalize_options(options) stringify_ids(limit(offset(db[collection].find.sort({ '_id' => 1 }), options[:offset]), options[:limit]).to_a) end
find(id)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 25 def find(id) stringify_ids(db[collection].find('_id' => bson(id)).to_a).first || {} end
find_by(field, value, options={})
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 34 def find_by(field, value, options={}) options = normalize_options(options) stringify_ids(limit(offset(db[collection].find({ field.to_s => value }).sort({ '_id' => 1 }), options[:offset]), options[:limit]).to_a) end
id_for(data)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 63 def id_for(data) data.fetch('id', data.fetch('_id', uuid_generator.new)).to_s end
index(field)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 13 def index(field) db[collection].create_index(field.to_s) true end
normalize_data(data)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 56 def normalize_data(data) deep_copy(data).tap do |d| d.merge!('id' => id_for(d)) d.merge!('_id' => bson(d['id'])) end end
remove(id)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 39 def remove(id) db[collection].remove({ '_id' => bson(id)}) true end
remove_all()
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 44 def remove_all db[collection].remove true end
save(data)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 18 def save(data) data = normalize_data(data) db[collection].update({ '_id' => data['_id'] }, data, { upsert: true }) data['_id'] = data['_id'].to_s data end
stringify_ids(results)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 49 def stringify_ids(results) results.each do |result| result['_id'] = result['_id'].to_s if result.has_key? '_id' end results end
Private Instance Methods
bson(id)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 68 def bson(id) uuid_generator.from_string(id.to_s) rescue id.to_s end
limit(cursor, limit)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 79 def limit(cursor, limit) return cursor unless limit > 0 cursor.limit(limit) end
offset(cursor, offset)
click to toggle source
# File lib/hikki/adapters/mongo_collection.rb, line 74 def offset(cursor, offset) return cursor unless offset > 0 cursor.skip(offset) end