Maypole::Model::Base - Base class for model classes |
Maypole::Model::Base - Base class for model classes
Anyone subclassing this for a different database abstraction mechanism needs to provide the following methods:
If there is an object in $r->objects
, then it should be edited
with the parameters in $r->params
; otherwise, a new object should
be created with those parameters, and put back into $r->objects
.
The template should be changed to view
, or edit
if there were any
errors. A hash of errors will be passed to the template.
$model->setup_database($config, $namespace, @data)
Uses the user-defined data in @data
to specify a database- for
example, by passing in a DSN. The model class should open the database,
and create a class for each table in the database. These classes will
then be adopt
ed. It should also populate $config->{tables}
and
$config->{classes}
with the names of the classes and tables
respectively. The classes should be placed under the specified
namespace. For instance, beer
should be mapped to the class
BeerDB::Beer
.
$model->class_of($r, $table)
This maps between a table name and its associated class.
This turns an ID into an object of the appropriate class.
This is called on an model class representing a table and allows the master model class to do any set-up required.
This can go either in the master model class or in the individual
classes, and returns a list of has-many accessors. A brewery has many
beers, so BeerDB::Brewery
needs to return beers
.
This is a list of all the columns in a table. You may also override
display_columns
, which is the list of columns you want to view, in
the right order.
This is the name of the table.
list
method should fill $r-> objects
with all of the
objects in the class. You may want to page this using Data::Page
or
similar.
Also, see the exported commands in Maypole::Model::CDBI
.
Additionally, individual derived model classes may want to override the following methods:
Return a hash mapping column names with human-readable equivalents.
A description of the class to be passed to the template.
Maypole::Model::Base - Base class for model classes |