Handel
view release on metacpan or search on metacpan
lib/Handel/Storage/Result.pm view on Meta::CPAN
# $Id$
## no critic (RequireFinalReturn)
package Handel::Storage::Result;
use strict;
use warnings;
BEGIN {
use base qw/Class::Accessor::Grouped/;
use Scalar::Util ();
__PACKAGE__->mk_group_accessors('simple', qw/storage_result storage/);
};
sub can {
return unless Scalar::Util::blessed($_[0]);
return shift->storage_result->can(shift);
};
sub delete {
Handel::Exception::Virtual->throw;
};
sub discard_changes {
Handel::Exception::Virtual->throw;
};
sub has_column {
my ($self, $column) = @_;
if ($self->can($column)) {
return 1;
} else {
return;
};
};
sub update {
Handel::Exception::Virtual->throw;
};
sub add_item {
return $_[0]->storage->add_item(@_)
};
sub delete_items {
return $_[0]->storage->delete_items(@_);
};
sub count_items {
return $_[0]->storage->count_items(@_);
};
sub search_items {
return $_[0]->storage->search_items(@_);
};
sub items {
return shift->search_items(@_);
};
sub create_instance {
my ($self, $result, $storage) = @_;
my $class = Scalar::Util::blessed $self ? Scalar::Util::blessed $self : $self;
return bless {
storage_result => $result,
storage => $storage
}, $class;
};
sub txn_begin {
return shift->storage->txn_begin;
};
sub txn_commit {
return shift->storage->txn_commit;
};
sub txn_rollback {
return shift->storage->txn_rollback;
};
sub AUTOLOAD {
my $self = shift;
return if (our $AUTOLOAD) =~ /::DESTROY$/;
$AUTOLOAD =~ s/^.*:://;
return $self->storage_result->$AUTOLOAD(@_);
};
1;
__END__
=head1 NAME
Handel::Storage::Result - Generic result object returned by storage operations
( run in 0.928 second using v1.01-cache-2.11-cpan-39bf76dae61 )