X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCursor.pm;h=95cbe557aca7591da353f030e6924273fe7670e5;hb=d098704fa2e7e92b3a6cdf0a251f3e725623f9a4;hp=5d935c778221344c4af9da4b2fbac0e37164539a;hpb=28927b50e8ea9dbdf08a3ffeb9f1701f7b9fb99a;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Cursor.pm b/lib/DBIx/Class/Cursor.pm index 5d935c7..95cbe55 100644 --- a/lib/DBIx/Class/Cursor.pm +++ b/lib/DBIx/Class/Cursor.pm @@ -3,16 +3,95 @@ package DBIx::Class::Cursor; use strict; use warnings; +use base qw/DBIx::Class/; + +=head1 NAME + +DBIx::Class::Cursor - Abstract object representing a query cursor on a +resultset. + +=head1 SYNOPSIS + + my $cursor = $schema->resultset('CD')->cursor(); + + # raw values off the database handle in resultset columns/select order + my @next_cd_column_values = $cursor->next; + + # list of all raw values as arrayrefs + my @all_cds_column_values = $cursor->all; + +=head1 DESCRIPTION + +A Cursor represents a query cursor on a L object. It +allows for traversing the result set with L, retrieving all results with +L and resetting the cursor with L. + +Usually, you would use the cursor methods built into L +to traverse it. See L, +L and L for more +information. + +=head1 METHODS + +=head2 new + +Virtual method. Returns a new L object. + +=cut + sub new { die "Virtual method!"; } +=head2 next + +Virtual method. Advances the cursor to the next row. Returns an array of +column values (the result of L method). + +=cut + sub next { die "Virtual method!"; } +=head2 reset + +Virtual method. Resets the cursor to the beginning. + +=cut + sub reset { die "Virtual method!"; } +=head2 all + +Virtual method. Returns all rows in the L. + +=cut + +sub all { + my ($self) = @_; + $self->reset; + my @all; + while (my @row = $self->next) { + push(@all, \@row); + } + $self->reset; + return @all; +} + +=head1 FURTHER QUESTIONS? + +Check the list of L. + +=head1 COPYRIGHT AND LICENSE + +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L. + +=cut + 1;