lib/toy/persistence.rb in toystore-0.6.6 vs lib/toy/persistence.rb in toystore-0.7.0

- old
+ new

@@ -4,33 +4,18 @@ module ClassMethods def store(name=nil, client=nil, options={}) assert_client(name, client) @store = Adapter[name].new(client, options) if !name.nil? && !client.nil? - assert_store(name, client, 'store') + assert_store(name, client) @store end def has_store? !@store.nil? end - def cache(name=nil, client=nil) - assert_client(name, client) - @cache = Adapter[name].new(client) if !name.nil? && !client.nil? - assert_store(name, client, 'cache') - @cache - end - - def has_cache? - !@cache.nil? - end - - def store_key(id) - id - end - def create(attrs={}) new(attrs).tap { |doc| doc.save } end def delete(*ids) @@ -44,28 +29,20 @@ private def assert_client(name, client) raise(ArgumentError, 'Client is required') if !name.nil? && client.nil? end - def assert_store(name, client, which) - raise(StandardError, "No #{which} has been set") if name.nil? && client.nil? && !send(:"has_#{which}?") + def assert_store(name, client) + raise(StandardError, "No store has been set") if name.nil? && client.nil? && !has_store? end end module InstanceMethods def store self.class.store end - def cache - self.class.cache - end - - def store_key - self.class.store_key(id) - end - def new_record? @_new_record == true end def destroyed? @@ -88,14 +65,13 @@ def destroy delete end def delete - key = store_key @_destroyed = true - logger.debug("ToyStore DEL #{self.class.name} #{key.inspect}") - store.delete(key) + log_operation(:del, self.class.name, store, id) + store.delete(id) end private def create persist! @@ -108,17 +84,13 @@ def persist @_new_record = false end def persist! - key, attrs = store_key, persisted_attributes + attrs = persisted_attributes attrs.delete('id') # no need to persist id as that is key - if self.class.has_cache? - cache.write(key, attrs) - log_operation('WTS', self, cache, key, attrs) - end - store.write(key, attrs) - log_operation('SET', self, store, key, attrs) + store.write(id, attrs) + log_operation(:set, self.class.name, store, id, attrs) persist each_embedded_object { |doc| doc.send(:persist) } true end end \ No newline at end of file