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::Simpleoptions:root: /data1/filesfiles1:package: File::Simpleoptions:root: /data1/files_copymulti:package: File::Multioptions: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 Perluse 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 storemy $item = $store->add({ _id => '1234');# Retrieve the folder bagmy $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 filemy $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