Provided by: libcatmandu-filestore-perl_1.16-2_all
NAME
Catmandu::Store::File::Simple - A Catmandu::FileStore to store files on disk
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 # Define a configuration file $ cat catmandu.yml --- store: mypaths: package: DBI options: data_source: dbi:sqlite:dbname=data/index.db myfiles: package: File::Simple options: root: data/files directory_index_package: Map directory_index_options: store_name: mypaths bag_name: data ... # Use the default 'catmandu.yml' configuraion file to add data to the FileStore $ catmandu stream /tmp/myfile.txt to myfiles --bag 1234 --id myfile.txt $ catmandu stream myfiles --bag 1234 --id myfile.txt to /tmp/myfile.txt # From Perl use Catmandu; my $store = Catmandu->store('File::Simple' , root => 't/data'); my $index = $store->index; # List all folder $index->bag->each(sub { my $container = shift; print "%s\n" , $container->{_id}; }); # Add a new folder $index->add({ _id => '1234' }); # Get the folder my $files = $index->files('1234'); # Add a file to the folder $files->upload(IO::File->new('<foobar.txt'), 'foobar.txt'); # Retrieve a file my $file = $files->get('foobar.txt'); # Stream the contents of a file $files->stream(IO::File->new('>foobar.txt'), $file); # Delete a file $files->delete('foobar.txt'); # Delete a folder $index->delete('1234');
DESCRIPTION
Catmandu::Store::File::Simple is a Catmandu::FileStore implementation to store files in a directory structure. Each Catmandu::FileBag is a deeply nested directory based on the numeric identifier of the bag. E.g. $store->bag(1234) is stored as ${ROOT}/000/001/234 In this directory all the Catmandu::FileBag items are stored as flat files.
METHODS
new(root => $path , [ keysize => NUM , uuid => 1]) Create a new Catmandu::Store::File::Simple with the following configuration parameters: root The root directory where to store all the files. Required. keysize DEPRECATED: use directory_index_package and directory_index_options By default the directory structure is 3 levels deep. With the keysize option a deeper nesting can be created. The keysize needs to be a multiple of 3. All the container keys of a Catmandu::Store::File::Simple must be integers. uuid DEPRECATED: use directory_index_package and directory_index_options If the to a true value, then the Simple store will require UUID-s as keys directory_index_package package name that translates between id and a directory. prefix "Catmandu::DirectoryIndex::" can be omitted. Default: Catmandu::DirectoryIndex::Number directory_index_options Constructor arguments for the directory_index_package (see above) directory_index instance of Catmandu::DirectoryIndex. When supplied, directory_index_package and directory_index_options are ignored. When not, this object is constructed from directory_index_package and directory_index_options.
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::Simple::Index, Catmandu::Store::File::Simple::Bag, Catmandu::Plugin::SideCar, Catmandu::FileStore