The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Model::Envoy::Set

A role for creating, finding and listing Model::Envoy based objects. Similar in philosophy to DBIx::Class::ResultSets.

Synopsis

    package My::Models;

    use Moose;
    with 'Model::Envoy::Set' => { namespace => 'My::Envoy' };


    ....then later...

    my $widget = My::Models->m('Widget')->fetch( id => 2 );

    $widget->name('renamed');
    $widget->save;

Configuration

When incorporating this role into your class, you will need to specify the perl namespace where your model classes reside per the synopsis above.

Methods

m($type)

Returns an Envoy::Set of the specified $type. So for a class My::Model::Foo

    my $set = My::Models->m('Foo');

build(\%params)

Create a new instance of the Model::Envoy based class referenced by the set:

    my $instance = $set->build({
        attribute => $value,
        ...
    });

fetch(%params)

Retrieve an object from storage

    my $model = $set->fetch( id => 1 );

list(%params)

Query storage and return a list of objects that matched the query

    my $models = $set->list(
        color => 'green',
        size  => 'small',
        ...
    );

get_storage($storage_package)

Passes back the storage plugin specified by $storage_package being used by the set's model type. Follows the same namespace resolution process as the Model::Envoy method of the same name.

load_types(@names)

For now Model::Envoy does not slurp all the classes in a certain namespace for use with $set->m(). Call load_types() at the start of your program instead:

    My::Models->load_types( qw( Foo Bar Baz ) );