Catmandu::DirectoryIndex::Map - translates between id and path using a Catmandu::Bag as lookup
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();
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.
Create a new Catmandu::DirectoryIndex::Map with the following configuration parameters:
See Catmandu::DirectoryIndex
Name of the store in the Catmandu configuration.
Ignored when bag instance is given.
Name of the bag in the Catmandu configuration.
Ignored when bag instance is given
Instance of Catmandu::Bag where all mappings between _id and _path are stored.
This Catmandu::DirectoryIndex::Map implements:
Catmandu::DirectoryIndex
To install Catmandu::FileStore, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Catmandu::FileStore
CPAN shell
perl -MCPAN -e shell install Catmandu::FileStore
For more information on module installation, please visit the detailed CPAN module installation guide.