NAME

    Mojo::Cache::Role::Strict - Limit get to keys that exist and prevent
    calls to set

STATUS

SYNOPSIS

      my $strict_cache = Mojo::Cache->new
                                    ->set(key_that_exists => 'I am here!')
                                    ->with_roles('+Strict')
                                    ;
    
      # prints "I am here!"
      say $strict_cache->get('key_that_exists');
    
      # get key that doesn't exist dies
      say $strict_cache->get('nonexistent_key');
    
      # setting new key dies
      $strict_cache->set(new_key => 'I die!');
    
      # updating existing key dies
      $strict_cache->set(key_that_exists => 'I die!');
    
      # allow nonexistent keys to be passed to get
      my $value = $strict_cache->strict_get(0)->get('nonexistent_key');
    
      # allow keys to be set
      $strict_cache->strict_set(0)->set(new_key => 'I live!');

DESCRIPTION

    Mojo::Cache::Role::Strict is a role that makes your Mojo::Cache
    instance strict by dying when calling "get" in Mojo::Cache with keys
    that do not exist in the cache (have not been set with "set" in
    Mojo::Cache) and by dying when you call "set" in Mojo::Cache. You can
    optionally allow "get" in Mojo::Cache and "set" in Mojo::Cache with
    "strict_get" and "strict_set".

METHODS

 exists

      if ($strict_cache->exists('key')) {
        my $value = $strict_cache->get('key');
        ...
      }

    Returns true if a cached value exists for the provided key, false
    otherwise.

    "exists" is composed from Mojo::Cache::Role::Exists. See that module
    for more information.

 strict_get

      my $strict_cache = Mojo::Cache->new->with_roles('+Strict')->strict_get(0);
    
      # lives even though key does not exist
      my $value = $strict_cache->get('nonexistent_key');

    "strict_get" specifies whether keys must exist when calling "get" in
    Mojo::Cache. If true, keys that do not exist will throw. If false,
    undef will be returned.

    The default is true.

    This method returns the Mojo::Cache object.

 strict_set

      my $strict_cache = Mojo::Cache->new
                                    ->set(key_that_exists => 'I am here!')
                                    ->with_roles('+Strict')
                                    ->strict_set(0)
                                    ;
    
      # setting new key lives
      $strict_cache->set(new_key => 'I live!');
    
      # updating existing key lives
      $strict_cache->set(key_that_exists => 'new value');

    "strict_set" specifies whether "set" in Mojo::Cache may be called. If
    true, calling "set" in Mojo::Cache will throw. If false, calls to "set"
    in Mojo::Cache are allowed.

    The default is true.

    This method returns the Mojo::Cache object.

AUTHOR

    Adam Hopkins <srchulo@cpan.org>

COPYRIGHT

    Copyright 2019- Adam Hopkins

LICENSE

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

SEE ALSO

      * Mojolicious

      * Mojo::Cache

      * Mojo::Cache::Role::Exists