Yancy::Guides::Model - Building modules for your application's business logic
version 1.072
This guide describes how to extend Yancy::Model to add custom business logic.
There are three types of classes in Yancy::Model:
Yancy::Model
The model class represents the entire database and contains schemas.
Schema classes represent individual tables, views, or collections and contain items.
Item classes represent individual records from the database.
To create your model, extend the Yancy::Model class.
package MyApp::Model; use Mojo::Base 'Yancy::Model', -signatures;
Make sure to add your namespace to the "namespaces" in Yancy::Model array:
unshift @{ $model->namespaces }, 'MyApp';
Your model class should include methods for the most common data lookups:
sub get_user( $self, $id ) { return $self->schema( 'user' )->get( $id ); }
Your model class should also store configuration needed by the other classes:
# Invitation e-mails come from this address has email_from => 'no-reply@example.com';
To create a schema class, extend Yancy::Model::Schema. The name of the schema class should be the camel-cased version of the schema's name.
package MyApp::Schema::User; use Mojo::Base 'Yancy::Model::Schema', -signatures;
The schema class should contain methods that work on the collection: Creating new items, searching for items.
# Invite a new user sub invite( $self, $email ) { my $id = $self->create({ email => $email }); $self->get( $id )->send_invite_mail; return $id; }
To create an item class, extend Yancy::Model::Item. The name of the item class should be the camel-cased version of the schema's name.
package MyApp::Item::User; use Mojo::Base 'Yancy::Model::Item', -signatures;
The item class should contain methods that work on individual records.
# Send the invite mail to this user sub send_invite_mail( $self ) { my $to = $self->data->{email}; my $from = $self->model->email_from; # TODO: Send e-mail }
Yancy::Guides, Yancy::Model
Doug Bell <preaction@cpan.org>
This software is copyright (c) 2021 by Doug Bell.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Yancy, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Yancy
CPAN shell
perl -MCPAN -e shell install Yancy
For more information on module installation, please visit the detailed CPAN module installation guide.