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
perl v5.36.0                                       2022-12-10                  Catmandu::Store::File::Multi(3pm)