Provided by: libcatmandu-filestore-perl_1.16-2_all bug

NAME

       Catmandu::DirectoryIndex::Map - translates between id and path using a Catmandu::Bag as
       lookup

SYNOPSIS

           use Catmandu::DirectoryIndex::Map;
           use Catmandu::Store::DBI;

           # Bag to store/retrieve all path -> directory mapping
           my $bag = Catmandu::Store::DBI->new(
               data_source => "dbi:sqlite:dbname=/data/index.db"
           )->bag("paths");

           my $p = Catmandu::DirectoryIndex::Map->new(
               base_dir => "/data",
               bag => $bag
           );

           # Tries to find a mapping for id "a".
           # return: mapping or undef
           my $mapping = $p->get("a");

           # Returns a mapping like { _id => "a", _path => "/data/2018/01/01/16/00/00/0cc175b9c0f1b6a831c399e269772661" }
           my $mapping = $p->add("a");

           # Catmandu::DirectoryIndex::Map is a Catmandu::Iterable
           # Returns list of records: [{ _id => "a", _path => "/data/2018/01/01/16/00/00/0cc175b9c0f1b6a831c399e269772661" }]
           my $mappings = $p->to_array();

DESCRIPTION

           This package uses a Catmandu::Bag backend to translate between ids and paths.

           Each record looks like this:

               { _id => "a", _path => "/data/2018/01/01/16/00/00/0cc175b9c0f1b6a831c399e269772661" }

           If the mapping for the id does not exist yet, this package calculates it by concatenating
           into a path:

           * $base_dir which is configurable
           * YYYY: current year
           * MM: current month
           * DD: current day of month
           * HH: current hour
           * MM: current minute
           * SS: current second
           * TEXT: the md5 of the _id

           Every call to C<add> will generate a directory entry in the backend database,
           if it didn't already exist.

METHODS

   new( OPTIONS )
       Create a new Catmandu::DirectoryIndex::Map with the following configuration parameters:

       base_dir
           See Catmandu::DirectoryIndex

       store_name
           Name of the store in the Catmandu configuration.

           Ignored when bag instance is given.

       bag_name
           Name of the bag in the Catmandu configuration.

           Ignored when bag instance is given

       bag Instance of Catmandu::Bag where all mappings between _id and _path are stored.

INHERITED METHODS

       This Catmandu::DirectoryIndex::Map implements:

       Catmandu::DirectoryIndex

SEE ALSO

       Catmandu::DirectoryIndex