Catmandu::Bag(3)
A Catmandu::Store compartment to persist data
SYNOPSIS
my $store = Catmandu::Store::DBI->new(data_source => 'DBI:mysql:database=test');
my $store = Catmandu::Store::DBI->new(
data_source => 'DBI:mysql:database=test',
bags => { journals => {
fixes => [ ... ] ,
autocommit => 1 ,
plugins => [ ... ] ,
id_generator => Catmandu::IdGenerator::UUID->new ,
}
},
bag_class => Catmandu::Bag->with_plugins('Datestamps')
);
# Use the default bag...
my $bag = $store->bag;
# Or a named bag...
my $bag = $store->bag('journals');
# Every bag is an iterator...
$bag->each(sub { ... });
$bag->take(10)->each(sub { ... });
$bag->add($hash);
$bag->add_many($iterator);
$bag->add_many([ $hash, $hash , ...]);
# Commit changes...
$bag->commit;
my $obj = $bag->get($id);
$bag->delete($id);
$bag->delete_all;
OPTIONS
fixes
An array of fixes to apply before importing or exporting data from the bag.
plugins
An array of Catmandu::Pluggable to apply to the bag items.
autocommit
When set to a true value an commit automatically gets executed when the bag
goes out of scope.
id_generator
An Catmandu::IdGenerator.
METHODS
new(OPTIONS)
Create a new Bag.
add($hash)
Add one hash to the store or updates an existing hash by using its '_id' key. Returns
the stored hash on success or undef on failure.
add_many($array)
add_many($iterator)
Add or update one or more items to the store.
get($id)
Retrieves the item with identifier $id from the store.
get_or_add($id, $hash)
Retrieves the item with identifier $id from the store or adds $hash with _id
$id if it's not found.
delete($id)
Deletes the item with identifier $id from the store.
delete_all
Deletes all items from the store.
commit
Commit changes.
log
Return the current logger.
CLASS METHODS
with_plugins($plugin)
with_plugins(\@plugins)
Plugins are a kind of fixes that should be available for each bag. E.g. the Datestamps plugin will
automatically store into each bag item the fields 'date_updated' and 'date_created'. The with_plugins
accept one or an array of plugin classnames and returns a subclass of the Bag with the plugin
methods implemented.