Provided by: libcatmandu-perl_1.0700-1_all bug

NAME

       Catmandu::FileStore - Namespace for packages that can make files persistent

SYNOPSIS

           # From the command line

           # Export a list of all file containers
           $ catmandu export File::Simple --root t/data to YAML

           # Export a list of all files in container '1234'
           $ catmandu export File::Simple --root t/data --bag 1234 to YAML

           # Add a file to the container '1234'
           $ catmandu stream /tmp/myfile.txt to File::Simple --root t/data --bag 1234 --id myfile.txt

           # Download the file 'myfile.txt' from the container '1234'
           $ catmandu stream File::Simple --root t/data --bag 1234 --id myfile.txt to /tmp/output.txt

           # Delete the file 'myfile.txt' from the container '1234'
           $ catmandu delete File::Simple --root t/data --bag 1234 --id myfile.txt

           # From Perl
           use Catmandu;

           my $store = Catmandu->store('File::Simple' , root => 't/data');

           # List all containers
           $store->index->each(sub {
               my $container = shift;

               print "%s\n" , $container->{_id};
           });

           # Add a new container
           $store->index->add({ _id => '1234' });

           # Get the container
           my $files = $store->index->files('1234');

           # Add a file to the container
           $files->upload(IO::File->new('<foobar.txt'), 'foobar.txt');

           # Stream the contents of a file
           $files->stream(IO::File->new('>foobar.txt'), 'foobar.txt');

           # Delete a file
           $files->delete('foobar.txt');

           # Delete a container
           $store->index->delete('1234');

DESCRIPTION

       Each Catmandu::FileStore is a Catmandu::Store and inherits all its methods,

       A Catmandu::FileStore is package to store and retrieve binary content in an filesystem,
       memory or a network. A "Catmandu::FileStore" contains one or more "Catmandu::FileBag"
       which is a kind of folder.

       Each "Catmandu::FileBag" contains one or more files.

       One special "Catmandu::FileBag" is the "index" and contains the listing of all
       "Catmandu::FileBag" in the "Catmandu::FileStore".

CONFIGURATION

       index_bag
           The name of the index bag to use when no bag name is give. The index bag is a bag
           containing a listing of all "Catmandu::FileBag"-s in the Store.

               my $index = $store->index;

               $index->each(sub {
                   my $bag = shift;

                   printf "%s\n" , $bag->{_id};
               });

       index_class
           The default class implementation to use for an index of "Catmandu::FileBag"-s.  By
           default this is the "Catmandu::FileStore" implementation with '::Index' added.

METHODS

   bag($name)
       Create or retieve a bag with name $name. Returns a Catmandu::FileBag.

   index
       Returns the index  Catmandu::FileBag for the Catmandu::FileStore.

         my $index = $store->index;

         # Add a new file container
         $index->add({ _id => '1234'});

         # Anf use it...
         my $container = $store->bag('1234');

         $container->upload(IO::File->new('data.txt') , 'data.txt');

   log
       Return the current logger. Can be used when creating your own Stores.

       E.g.

           package Catmandu::Store::Hash;

           ...

           sub generator {
               my ($self) = @_;

               $self->log->debug("generating record");
               ...
           }

       See also: Catmandu for activating the logger in your main code.

SEE ALSO

       Catmandu::Store::File::Simple, Catmandu::Store::File::Memory, Catmandu::FileBag

LICENSE AND COPYRIGHT

       This program is free software; you can redistribute it and/or modify it under the terms of
       either: the GNU General Public License as published by the Free Software Foundation; or
       the Artistic License.

       See <http://dev.perl.org/licenses/> for more information.