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

NAME

Mongol::Cookbook - Mongol tips and tricks

TIPS

Models base class

        package Models::Base {
                use Moose;

                extends 'Mongol::Model'

                __PACKAGE__->meta()->make_immutable();
        }

        package Models::User {
                use Moose;

                extends 'Models::Base';

                with 'Mongol::Roles::Core';

                has 'username' => (
                        is => 'ro',
                        isa => 'Str',
                        required => 1
                );

                has 'password' => (
                        is => 'ro',
                        isa => 'Str',
                        required => 1,
                );

                ...

                __PACKAGE__->meta()->make_immutable();
        }

Save/Remove triggers

Serialize your instances

Somewhere in the Mojolicious world...

        sub action {
                my $self = shift();

                ...

                my $user = Models::User->retrieve(
                        $self->param( 'user_id' )
                );

                return $self->render( json => $user->serialize() );
        }

Custom ids

        package Models::User {
                use Moose;

                extends 'Mongol::Model';

                use Data::UUID;

                with 'Mongol::Roles::Core';

                has '+id' => (
                        default => sub { Data::UUID->new()->create_b64() },
                );

                has 'username' => (
                        is => 'ro',
                        isa => 'Str',
                        required => 1,
                );

                has 'password' => (
                        is => 'ro',
                        isa => 'Str',
                        required => 1,
                );

                ...

                __PACKAGE__->meta()->make_immutable();
        }

        1;

SEE ALSO

AUTHOR

Tudor Marghidanu <tudor@marghidanu.com>