NAME

Mongoose::Class - sugary Mongoose-oriented replacement for Moose

SYNOPSIS

package MySchema::Person;
use Mongoose::Class; # uses Moose for you
with 'Mongoose::Document';

has 'name'          => ( is => 'rw', isa => 'Str' );
has_many 'siblings' => ( is => 'rw', isa => 'Person' );
belongs_to 'club'   => ( is => 'rw', isa => 'Club' );
has_one 'father'    => ( is => 'rw', isa => 'Person' );

DESCRIPTION

This is very much a work-in-progress.

Basically, this module adds some sugar into your Mongoose Document class by defining some stand-in replacements for Moose's own has.

has_many
has_one
belongs_to

The idea: fewer keystrokes and improved readability by self-documenting your class.

METHODS

has_one

Wrapper around Moose's own has, but allows for a shorter syntax:

has_one 'name';            # isa=>'Any', is=>'rw' added
has_one 'age' => 'Num';    # is=>'rw' added
has_one 'age' => 'Num', default=>99;

belongs_to

It's the same as using has_one from above. It exists to improve your code expressiveness.

has_many

Wraps the defined relationship with another class using Mongoose::Join.

This:

has_many 'employees' => ( isa=>'Employee' );

# or

has_many 'employees' => 'Employee';

Becomes this:

has 'employees' => (
    is      => 'ro',
    isa     => 'Mongoose::Join[Employee]',
    default => sub { Mongoose::Join->new( with_class=>'Employee' ) }
);