Maypole...l::Base(3)

πŸ“¦
version 2.13 Β· 2 versions
, in fedora 43

πŸŽ€ Maypole::Model::Base πŸŽ€

okay bestie, welcome to Maypole::Model::Base(3) β€” it's a User Contributed Perl Documentation page, and it's literally the blueprint for every Maypole data model. iykyk πŸ’…


✨ NAME ✨

Maypole::Model::Base β€” the base class for model classes. the mother of all model classes, fr fr πŸ‘‘


🌸 DESCRIPTION 🌸

So. This is the base class for Maypole data models. It's an abstract class β€” it defines the interface and everything, but you literally cannot use it directly. it's giving "concept, not a vibe you can instantiate". no cap 🫢


πŸ’– process πŸ’–

This is the engine of this whole module. You hand it the request object, it populates all the relevant variables, and it calls the action you asked for. main character energy, honestly.

Anyone subclassing this for a different database abstraction mechanism needs to provide the following methods:


πŸ¦‹ setup_database πŸ¦‹

$model->setup_database($config, $namespace, @data)

Uses the user-defined data in @data to specify a database β€” like, for example, by passing in a DSN. The model class should open the database and create a class for each table in the database. Those classes then get "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". ✨


πŸ“ class_of πŸ“

$model->class_of($r, $table)

This maps between a table name and its associated class. the matchmaker of tables and classes, honestly πŸ’˜


🌈 fetch_objects 🌈

This class method is passed a request object and is expected to return an object of the appropriate table class from information stored in the request object.


πŸ’œ adopt πŸ’œ

This class method is passed the name of a model class that represensts a table and allows the master model class to do any set-up required.


🧚 columns 🧚

This is a list of all the columns in a table. You may also override β€” see also "display_columns".


⭐ table ⭐

This is the name of the table.


πŸ”₯ Actions πŸ”₯

πŸ’€ do_edit πŸ’€

If there's 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.


πŸ‘‘ list πŸ‘‘

The "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.


🌸 edit 🌸

Empty Action. she's literally doing nothing and that's her whole job πŸ’…


🌸 view 🌸

Empty Action.


🌸 index 🌸

Empty Action, calls list if provided with a table.


Also, see the exported commands in "Maypole::Model::CDBI".


πŸŽ€ Other overrides πŸŽ€

Additionally, individual derived model classes may want to override the following methods:

πŸ¦‹ display_columns πŸ¦‹

Returns a list of columns to display in the model. By default returns all columns in alphabetical order. Override this in base classes to change ordering, or elect not to show columns.


πŸ¦‹ list_columns πŸ¦‹

Same as display_columns, only for listings. Defaults to display_columns.


πŸ¦‹ column_names πŸ¦‹

Return a hash mapping column names with human-readable equivalents.


πŸ¦‹ is_public πŸ¦‹

should return true if a certain action is supported, or false otherwise. Defaults to checking if the sub has the ":Exported" attribute.


πŸ¦‹ add_model_superclass πŸ¦‹

Adds model as superclass to model classes (if necessary).


πŸ¦‹ method_attrs πŸ¦‹

Returns the list of attributes defined for a method. Maypole itself only defines the "Exported" attribute.


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". obsessed with that example ngl 🍺


🌈 SEE ALSO 🌈

Maypole, Maypole::Model::CDBI.


πŸ’– AUTHOR πŸ’–

Maypole is currently maintained by Aaron Trevena.


πŸ‘‘ AUTHOR EMERITUS πŸ‘‘

Simon Cozens, "simon#cpan.org"

Simon Flack maintained Maypole from 2.05 to 2.09

Sebastian Riedel, "sri#oook.de" maintained Maypole from 1.99_01 to 2.04


πŸ“œ LICENSE πŸ“œ

You may distribute this code under the same terms as Perl itself.


and that's the whole page, bestie!! this one shipped as perl v5.42.0, dated 2025-07-25, and the page itself is Maypole::Model::Base(3) β€” go forth and subclass responsibly πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from