DBIx-SQLEngine
view release on metacpan or search on metacpan
SQLEngine/Record/Hooks.pm view on Meta::CPAN
=cut
use Class::MakeMethods::Composite::Inheritable(hook=>'ok_insert pre_insert post_insert');
# $record->insert_record()
sub insert_record {
my $self = shift;
my $class = ref( $self ) or croak("Not a class method");
my @flags = $self->ok_insert();
if ( grep { length $_ and ! $_ } @flags ) {
# warn "Cancelling insert of $self: " . join(', ', map "'$_'", @flags);
return undef;
}
$self->pre_insert();
$self->NEXT('insert_record');
$self->post_insert();
$self;
}
########################################################################
=head2 Update to Change Records
After retrieving a record with one of the fetch methods, you may save any changes by calling update_record.
=over 4
=item update_record
$record_obj->update_record() : $record_count
Attempts to update the record using its primary key as a unique identifier.
Calls ok_update to ensure that it's OK to update this row, and aborts if any of hook subroutines return 0.
Calls any pre_update hooks, then calls the superclass method, then calls any post_update hooks.
Returns undef if the update was aborted, or the record if the update was successful.
=item ok_update
Inheritable Hook. Add functions which to use to validate rows before they are updated. Return 0 to abort the update.
=item pre_update
Inheritable Hook. Add functions which should be called immediately before a row is updated.
=item post_update
Inheritable Hook. Add functions which should be called immediately after a row is updated.
=back
=cut
use Class::MakeMethods::Composite::Inheritable(hook=>'ok_update pre_update post_update');
# $record->update_record()
sub update_record {
my $self = shift;
my $class = ref( $self ) or croak("Not a class method");
my @flags = $self->ok_update;
if ( grep { length $_ and ! $_ } @flags ) {
# warn "Cancelling update of $self: " . join(', ', map "'$_'", @flags );
return undef;
}
# warn "About to update $self: " . join(', ', map "'$_'", @flags );
$self->pre_update();
$self->NEXT('update_record');
$self->post_update();
$self;
}
########################################################################
=head2 Delete to Remove Records
=over 4
=item delete_record()
$record_obj->delete_record() : $record_count
Delete this existing record based on its primary key.
Checks to see if any of the pre_delete results is "0". If not, calls the superclass method.
Returns 1 if the deletion was successful, or 0 if it was aborted.
=item ok_delete
$record->ok_delete () : @booleans
Inheritable Hook. Add functions which should be used to use to validate rows before they are updated. Return 0 to abort the deletion.
=item pre_delete
$record->pre_delete ()
Inheritable Hook. Add functions which should be called before a row is deleted.
=item post_delete
$record->post_delete ()
Inheritable Hook. Add functions which should be called after a row is deleted.
=back
=cut
use Class::MakeMethods::Composite::Inheritable(hook=>'ok_delete pre_delete post_delete');
# $success = $record->delete_record();
sub delete_record {
my $self = shift;
my @flags = $self->ok_delete;
if ( grep { length $_ and ! $_ } @flags ) {
# warn "Cancelling delete of $self: " . join(', ', map "'$_'", @flags );
( run in 2.636 seconds using v1.01-cache-2.11-cpan-800906f7e73 )