DBIx::SQLEngine::Record::Class - Factory for Record Classes
Setup: Several ways to create a class.
$sqldb = DBIx::SQLEngine->new( ... ); $class_name = $sqldb->record_class( $table_name, @traits ); $sqldb->record_class( $table_name, $class_name, @traits );
Basics: Common operations on a record.
$record = $class_name->fetch_record( $primary_key ); @records = $class_name->fetch_select(%clauses)->records; $record = $class_name->new_with_values(somefield => 'My Value'); print $record->get_values( 'somefield' ); $record->change_values( somefield => 'New Value' ); $record->insert_record(); $record->update_record(); $record->delete_record();
DBIx::SQLEngine::Record::Class is a factory for Record classes.
You can use this package to create a class whose instances represent each of the rows in a SQL database table.
package My::Record; use DBIx::SQLEngine::Record::Class '-isasubclass'; use DBIx::SQLEngine::Record::Class '-isasubclass', @Traits;
Allows for a simple declaration of inheritance.
DBIx::SQLEngine::Record::Class->new_subclass( %options ) : $class_name
Subclass constructor. Accepts a hash of options with the following keys:
If you do not supply a class name, one is generated based on the table name, which must be provided.
If the class name does not contain a "::" package separator, it is prepended with DBIx::SQLEngine::Record::Auto:: to keep the namespace conflict-free.
You may provde a DBIx::SQLEngine::Schema::Table object or create the class without it and initialize it later.
You may pass a reference to one or more trait names as a "traits" argument.
DBIx::SQLEngine::Record::Class->subclass_for_table( $table, $name, @traits ) : $class_name
Convenience method for common parameters. You are expected to provde a DBIx::SQLEngine::Schema::Table object.
Cross-constructors from other objects:
$sqldb->record_class( $tablename ) : $class_name $sqldb->record_class( $tablename, $name ) : $class_name $sqldb->record_class( $tablename, $name, @traits ) : $class_name
Convenience method to create a record class with the given table name.
$table->record_class( ) : $class_name $table->record_class( $name ) : $class_name $table->record_class( $name, @traits ) : $class_name
Convenience method to create a record class for a given table object.
Called internally by new_subclass() if no class name is provided.
Depending on application, there are several different sets of features that one might or might not wish to have available on their record class.
The following trait classes are included with this distribution:
Generates methods for getting and setting values in each record object.
Provides a caching layer to avoid repeated selections of the same information.
Adds ok_, pre_, and post_ hooks to key methods. Any number of code refs can be registered to be called at key times, by class or for specific instances.
$factory->base_class() : $base_class
$factory->require_package( $package_name )
Uses require() to load the named package.
$factory->get_trait_package($subclass) : ($name, $package, $trait)
$factory->base_class_with_traits() : $base_class $factory->base_class_with_traits( @traits ) : $class_name
Instead of forcing use of NEXT, with a slower redispatch method, we're going to build an ad-hod class hierarchy. Because some of the methods call SUPER methods, they need to be evaluated repeatedly in each composed subclass.
Used by trait packages to construct simple subclasses.
See DBIx::SQLEngine for the overall interface and developer documentation.
See DBIx::SQLEngine::Docs::ReadMe for general information about this distribution, including installation and license information.
To install DBIx::SQLEngine, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::SQLEngine
CPAN shell
perl -MCPAN -e shell install DBIx::SQLEngine
For more information on module installation, please visit the detailed CPAN module installation guide.