Provided by: libcatmandu-filestore-perl_1.16-2_all
NAME
Catmandu::Store::File::Multi - A store that adds files to multiple stores
SYNOPSIS
# On the Command line # Configure the File::Multi store with a catmandu.yml file $ cat catmandu.yml --- store: files1: package: File::Simple options: root: /data1/files files1: package: File::Simple options: root: /data1/files_copy multi: package: File::Multi options: stores: - files1 - files2 ... # List all the folder in the multi store as YAML $ catmandu export multi to YAML # Add a file to the multi store with ID 7890 and stored name data.dat $ catmandu stream /tmp/data.dat to multi --bag 7890 --id data.dat # Download a file from the multi store $ catmandu stream multi --bag 7890 --id data.dat # In Perl use Catmandu; my $store = Catmandu->store('File::Multi' , stores [ Catmandu->store('Simple', root => '/data1/files') , Catmandu->store('Simple', root => '/data1/files_copy') , ]); my $index = $store->index; $store->index->each(sub { my $item = shift; printf "%s\n" , $item->{_id}; }); # Add a folder to the multi store my $item = $store->add({ _id => '1234'); # Retrieve the folder bag my $files = $store->files(1234); # Listing of all files $files->each(sub { my $file = shift; my $name = $file->_id; my $size = $file->size; my $content_type = $file->content_type; my $created = $file->created; my $modified = $file->modified; $file->stream(IO::File->new(">/tmp/$name"), file); }); # Add a new file $files->upload(IO::File->new("</tmp/data.dat"),"data.dat"); # Retrieve a file my $file = $files->get('data.dat'); # Stream the file to an IO::Handle $container->stream(IO::File->new(">/tmp/data.dat"),$file); # This will delete the folder and files $index->delete('1234');
DESCRIPTION
The Catmandu::Store::File::Multi is a combination of many Catmandu::FileStore-s as one access point. The Multi store inherits all the methods from Catmandu::FileStore. By default, the Multi store tries to update records in all configured backend stores. Importing, exporting, delete and drop will be executed against all backend stores when possible.
METHODS
new(stores => [...]) Create a new Catmandu::Store::File::Multi. The "stores" configuration parameter contains an array of references to Catmandu::FileStore-s based on their name in a configuration file or instances.
INHERITED METHODS
This Catmandu::FileStore implements: Catmandu::FileStore Catmandu::Droppable The index Catmandu::Bag in this Catmandu::Store implements: Catmandu::Bag Catmandu::FileBag::Index Catmandu::Droppable The file Catmandu::Bag in this Catmandu::Store implements: Catmandu::Bag Catmandu::FileBag Catmandu::Droppable
SEE ALSO
Catmandu::Store::File::Multi::Index, Catmandu::Store::File::Multi::Bag, Catmandu::Store::Multi , Catmandu::Plugin::SideCar