NAME
Mongol::Base - Base class for Mongol entities
SYNOPSIS
package My::Model::Person {
use Moose;
extends 'Mongol::Base';
has 'name' => (
is => 'ro',
isa => 'Str',
required => 1,
);
has 'age' => (
is => 'ro',
isa => 'Int',
required => 1,
);
__PACKAGE__->meta()->make_immutable();
}
...
my $person = Person->new( { name => 'John Doe', age => 30 } );
my $data = $person->pack();
my $other_person = Person->unpack( $data );
DESCRIPTION
All Mongol entitities should inherit from this class since this takes care of the serializiation/deserialization of the objects. The serialization is provided by MooseX::Storage together with MooseX::Storage::Base::SerializedClass, this way we don't have to worry about coercions and defining custom subtypes.
But this comes with a price since MooseX::Storage adds an additional field for each object which contains the class name.
METHODS
pack
my $hash = $model->pack();
Inherited from MooseX::Storage.
unpack
$model->unpack( $hash );
Inherited from MooseX::Storage.
serialize
my $hash = $model->serialize();
Just like pack except it drops the __CLASS__ field from the resulting hash reference.