X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCursor%2FCached.pm;h=9a8c64f7b1ab582164e2518f33459264ed2a306f;hb=9f0680b8f12c134caf22bbc8bab5a4e402615963;hp=08fc6dd5ef247432c25b34729b8264470cc52c72;hpb=a91d66a78c529e9d1a9e6325a6f465eabca350ec;p=dbsrgits%2FDBIx-Class-Cursor-Cached.git diff --git a/lib/DBIx/Class/Cursor/Cached.pm b/lib/DBIx/Class/Cursor/Cached.pm index 08fc6dd..9a8c64f 100644 --- a/lib/DBIx/Class/Cursor/Cached.pm +++ b/lib/DBIx/Class/Cursor/Cached.pm @@ -64,10 +64,14 @@ sub _build_cache_key { $conn = $connect_info->[0]->(); } } - - local $Storable::canonical = 1; - return Digest::SHA::sha1_hex(Storable::nfreeze( [ $ref, $conn->{Name}, $conn->{Username} || '' ] )); + return $class->_build_cache_key_hash([ $ref, $conn->{Name}, $conn->{Username} || '' ]); +} + +sub _build_cache_key_hash { + my ($class, $key_data) = @_; + local $Storable::canonical = 1; + return Digest::SHA::sha1_hex(Storable::nfreeze( $key_data )); } sub _fill_data { @@ -75,12 +79,17 @@ sub _fill_data { my $cache = $self->{cache_object}; my $key = $self->{cache_key}; return $cache->get($key) || do { - my $data = [ $self->{inner}->all ]; + my $data = $self->_fill_data_fetch_all(); $cache->set($key, $data, $self->{cache_for}); $data; }; } +sub _fill_data_fetch_all { + my ($self) = @_; + return [ $self->{inner}->all ]; +} + sub clear_cache { my ($self) = @_; $self->{cache_object}->remove($self->{cache_key});