Class: Hikki::Adapters::MongoCollection
- Inherits:
-
Collection
- Object
- Collection
- Hikki::Adapters::MongoCollection
- Defined in:
- lib/hikki/adapters/mongo_collection.rb
Instance Attribute Summary collapse
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
-
#db ⇒ Object
readonly
Returns the value of attribute db.
-
#uuid_generator ⇒ Object
readonly
Returns the value of attribute uuid_generator.
Instance Method Summary collapse
- #all(options = {}) ⇒ Object
- #find(id) ⇒ Object
- #find_by(field, value, options = {}) ⇒ Object
- #id_for(data) ⇒ Object
- #index(field) ⇒ Object
-
#initialize(collection, connection, db, uuid_generator) ⇒ MongoCollection
constructor
A new instance of MongoCollection.
- #normalize_data(data) ⇒ Object
- #remove(id) ⇒ Object
- #remove_all ⇒ Object
- #save(data) ⇒ Object
- #stringify_ids(results) ⇒ Object
Constructor Details
#initialize(collection, connection, db, uuid_generator) ⇒ MongoCollection
Returns a new instance of MongoCollection.
6 7 8 9 10 11 |
# 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 |
Instance Attribute Details
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
4 5 6 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 4 def connection @connection end |
#db ⇒ Object (readonly)
Returns the value of attribute db.
4 5 6 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 4 def db @db end |
#uuid_generator ⇒ Object (readonly)
Returns the value of attribute uuid_generator.
4 5 6 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 4 def uuid_generator @uuid_generator end |
Instance Method Details
#all(options = {}) ⇒ Object
29 30 31 32 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 29 def all(={}) = () stringify_ids(limit(offset(db[collection].find.sort({ '_id' => 1 }), [:offset]), [:limit]).to_a) end |
#find(id) ⇒ Object
25 26 27 |
# 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 = {}) ⇒ Object
34 35 36 37 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 34 def find_by(field, value, ={}) = () stringify_ids(limit(offset(db[collection].find({ field.to_s => value }).sort({ '_id' => 1 }), [:offset]), [:limit]).to_a) end |
#id_for(data) ⇒ Object
63 64 65 |
# 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) ⇒ Object
13 14 15 16 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 13 def index(field) db[collection].create_index(field.to_s) true end |
#normalize_data(data) ⇒ Object
56 57 58 59 60 61 |
# 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) ⇒ Object
39 40 41 42 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 39 def remove(id) db[collection].remove({ '_id' => bson(id)}) true end |
#remove_all ⇒ Object
44 45 46 47 |
# File 'lib/hikki/adapters/mongo_collection.rb', line 44 def remove_all db[collection].remove true end |
#save(data) ⇒ Object
18 19 20 21 22 23 |
# 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) ⇒ Object
49 50 51 52 53 54 |
# 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 |