Provided by: libcatmandu-filestore-perl_1.16-2_all
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