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 );
package My::Record;
use DBIx::SQLEngine::Record::Class '-isasubclass', 'Table', 'Hooks';
My::Record->table( $sqldb->table($table_name) );
Basics: Common operations on a record.
$record = $class_name->new_with_values(somefield => 'My Value');
print $record->get_values( 'somefield' );
$record->change_values( somefield => 'New Value' );
Fetch: Retrieve records by ID or other query.
$record = $class_name->select_record( $primary_key );
@records = $class_name->fetch_select(%clauses)->records;
Modify: Write changes to the data source.
$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.
- import
-
package My::Record;
use DBIx::SQLEngine::Record::Class '-isasubclass';
use DBIx::SQLEngine::Record::Class '-isasubclass', @Traits;
Allows for a simple declaration of inheritance.
- class()
-
$factory->class() : $base_class
$factory->class( @traits ) : $class_name
Build an ad-hod class with mixins.
See the documentation for Class::MixinFactory to learn more
about developing custom mixin classes.
The MixinFactory is configured with the following package
names:
- base_class
- DBIx::SQLEngine::Record::Base
- mixin_prefix
- DBIx::SQLEngine::Record
- mixed_prefix
- DBIx::SQLEngine::Record::AUTO
- new_subclass()
-
DBIx::SQLEngine::Record::Class->new_subclass( %options ) : $class_name
Subclass constructor. Accepts a hash of options with the
following keys:
- 'name'
- 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.
- 'table'
- You may provde a DBIx::SQLEngine::Schema::Table object or create the class
without it and initialize it later.
- 'traits'
- You may pass a reference to one or more trait names as a
"traits" argument.
- subclass_for_table()
-
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.
- generate_subclass_name_for_table()
- Called internally by new_subclass() if no class name is
provided.
Cross-constructors from other objects:
- SQLEngine->record_class()
-
$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()
-
$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.
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:
- Accessors
- Generates methods for getting and setting values in each record
object.
- Cache
- Provides a caching layer to avoid repeated selections of the same
information.
- Hooks
- 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.
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.