Scroll to navigation

Catmandu::Store::Multi(3pm) User Contributed Perl Documentation Catmandu::Store::Multi(3pm)

NAME

Catmandu::Store::Multi - A store that adds data to multiple stores

SYNOPSIS

    # On the Command line
    # Configure the Multi store with a catmandu.yml file
    $ cat catmandu.yml
    ---
    store:
      metadata1:
       package: DBI
       options:
          data_source: "DBI:mysql:database=catmandu"
      metadata2:
       package: ElasticSearch
       options:
           client: '1_0::Direct'
           index_name: catmandu
      multi:
       package: Multi
       options:
           stores:
               - metadata1
               - metadata2
    ...
    # Add a YAML record to the multi store
    $ catmandu import YAML to multi < data.yml
    # Extract all the records from the multi store as YAML
    $ catmandu export multi to YAML > data.yml
    # In Perl
    use Catmandu;
    my $store = Catmandu->store('Multi' , stores [
        Catmandu->store('DBI', data_source => 'DBI:mysql:database=catmandu') ,
        Catmandu->store('ElasticSearch', client => '1_0::Direct', index_name => 'catmandu') ,
    ]);
    $store->bag->each(sub {
        my $item = shift;
        printf "%s\n" , $item->{_id};
    });
    $store->bag->add({ _id => 1234 , foo => 'bar' , test => [qw(1 2 3 4)]});
    my $item = $store->bag->get('1234');
    $store->bag->delete('1234');

DESCRIPTION

The Catmandu::Store::Multi is a combination of many Catmandu::Store-s as one access point. The Multi store inherits all the methods from Catmandu::Store.

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::Multi.The "store" configuration parameter contains an array of references to Catmandu::Store-s based on their name in a configuration file or instances.

INHERITED METHODS

This Catmandu::Store implements:

Each Catmandu::Bag in this Catmandu::Store implements:

2023-03-03 perl v5.36.0