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 )