class DCA::MongoStorage
Attributes
collection[R]
database[R]
Public Class Methods
establish_connection(config)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 11 def self.establish_connection(config) Mongo::Connection.new config[:host], config[:port] end
new(connection, context, options = {})
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 5 def initialize(connection, context, options = {}) @database = connection.db(options[:database] || DCA.project_name.underscore) @connection = connection @collection = database.collection(options[:collection] || get_alias(context)) end
Public Instance Methods
context(object)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 45 def context object result = self.clone result.instance_variable_set :@collection, result.database.collection(get_alias object) result end
create(item)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 33 def create(item) item.id = collection.insert hash_from item end
find(position)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 25 def find position collection.find_one base_id: position.base_id unless position.base_id.nil? end
refresh(item, state)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 29 def refresh(item, state) send state, item end
remove(item)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 41 def remove(item) collection.remove _id: item.id end
state(position)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 15 def state(position) item = find position return :create if item.nil? position.id = item['_id'] return :unmodified if item['checksum'] == position.checksum return :update end
update(item)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 37 def update(item) collection.update({_id: item.id}, hash_from(item)) end
Private Instance Methods
get_alias(object)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 59 def get_alias object object.respond_to?(:alias) ? object.alias : object.to_s.demodulize.downcase.pluralize end
hash_from(item)
click to toggle source
# File lib/dca/storage/mongo_storage.rb, line 53 def hash_from(item) data = item.to_hash data.delete(:id) data end