Data::Model::Driver::Cache::HASH - Penetration cache is offered to the basic driver


Data-Model documentation Contained in the Data-Model distribution.

Index


Code Index:

NAME

Top

Data::Model::Driver::Cache::HASH - Penetration cache is offered to the basic driver

SYNOPSIS

Top

  package MyDB;
  use base 'Data::Model';
  use Data::Model::Schema;
  use Data::Model::Driver::DBI;
  use Data::Model::Driver::Cache::HASH;

  my $dbi_connect_options = {};
  my $fallback_driver = Data::Model::Driver::DBI->new(
      dsn             => 'dbi:mysql:host=localhost:database=test',
      username        => 'user',
      password        => 'password',
      connect_options => $dbi_connect_options,
  );

  my $driver = Data::Model::Driver::Cache::HASH->new(
      fallback => $fallback_driver,
  );

  base_driver $driver;
  install_model model_name => schema {
    ....
  };

DESCRIPTION

Top

Penetration cache is offered to the basic driver. Cash is stored in the standard hash for Perl.

When cash does not hit, it asks fallback driver.

SEE ALSO

Top

Data::Model

AUTHOR

Top

Kazuhiro Osawa <yappo <at> shibuya <döt> pl>

LICENSE

Top

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Data-Model documentation Contained in the Data-Model distribution.

package Data::Model::Driver::Cache::HASH;
use strict;
use warnings;
use base 'Data::Model::Driver::Cache';

my %CACHE;

sub add_to_cache {
    my($self, $key, $data) = @_;

    my $ret = $CACHE{$key} = $data;
    return if !defined $ret;
    return $ret;
}

sub get_from_cache {
    my($self, $key) = @_;

    my $ret = $CACHE{$key};
    return if !defined $ret;
    return $ret;
}

sub remove_from_cache {
    my($self, $key) = @_;
    
    my $ret = delete $CACHE{$key};
    return if !defined $ret;
    return $ret;
}

1;