Data::Stream::Bulk::DBIC - Iterate DBIC resultsets with L<Data::Stream::Bulk>


Data-Stream-Bulk documentation Contained in the Data-Stream-Bulk distribution.

Index


Code Index:

NAME

Top

Data::Stream::Bulk::DBIC - Iterate DBIC resultsets with Data::Stream::Bulk

SYNOPSIS

Top

    Data::Stream::Bulk::DBIC->new(
        resultset => scalar($schema->rs("Foo")->search(...))
    );

DESCRIPTION

Top

This is a wrapper for DBIx::Class::ResultSet that fits the Data::Stream::Bulk api.

Due to the fact that DBIC inflation overhead is fairly negligiable to that of iteration though, I haven't actually bothered to make it bulk.

If DBIx::Class::Cursor will support n-at-a-time fetching as opposed to one-at-a-time or all-at-a-time at some point in the future this class will be updated to match.

METHODS

Top

get_more

See Data::Stream::Bulk::DoneFlag.

Returns a single row. In the future this should return more than one row.

AUTHOR

Top

Yuval Kogman <nothingmuch@woobling.org>

COPYRIGHT AND LICENSE

Top


Data-Stream-Bulk documentation Contained in the Data-Stream-Bulk distribution.

package Data::Stream::Bulk::DBIC;
BEGIN {
  $Data::Stream::Bulk::DBIC::AUTHORITY = 'cpan:NUFFIN';
}
BEGIN {
  $Data::Stream::Bulk::DBIC::VERSION = '0.08';
}
# ABSTRACT: Iterate DBIC resultsets with L<Data::Stream::Bulk>

use Moose;

use namespace::clean -except => 'meta';

with qw(Data::Stream::Bulk::DoneFlag) => { -excludes => [qw(is_done finished)] };

has resultset => (
    isa => "Object",
    clearer => "finished",
    handles => { next_row => "next" },
    required => 1,
);

sub get_more {
    my $self = shift;

    if ( defined( my $next = $self->next_row ) ) {
        return [ $next ];
    } else {
        return;
    }
}

__PACKAGE__->meta->make_immutable;

__PACKAGE__;


__END__