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