X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCursor.pm;h=d79bd12f9473ca2f9abfe8297b3fb5507a5793d7;hb=8292706e66edd1a95b3af7796aa013285fc842ef;hp=3cd5505d30aea72b4ba8300c432ee0781d984b00;hpb=223b8fe3185dba976b275c120ba7a07c05c06644;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Cursor.pm b/lib/DBIx/Class/Cursor.pm index 3cd5505..d79bd12 100644 --- a/lib/DBIx/Class/Cursor.pm +++ b/lib/DBIx/Class/Cursor.pm @@ -4,44 +4,26 @@ use strict; use warnings; sub new { - my ($it_class, $sth, $args, $attrs) = @_; - #use Data::Dumper; warn Dumper(@_); - $it_class = ref $it_class if ref $it_class; - my $new = { - sth => $sth, - args => $args, - pos => 0, - attrs => $attrs }; - return bless ($new, $it_class); + die "Virtual method!"; } sub next { - my ($self) = @_; - return if $self->{attrs}{rows} - && $self->{pos} >= $self->{attrs}{rows}; # + $self->{attrs}{offset}); - unless ($self->{live_sth}) { - $self->{sth}->execute(@{$self->{args} || []}); - if (my $offset = $self->{attrs}{offset}) { - $self->{sth}->fetch for 1 .. $offset; - } - $self->{live_sth} = 1; - } - my @row = $self->{sth}->fetchrow_array; - $self->{pos}++ if @row; - return @row; + die "Virtual method!"; } sub reset { - my ($self) = @_; - $self->{sth}->finish if $self->{sth}->{Active}; - $self->{pos} = 0; - $self->{live_sth} = 0; - return $self; + die "Virtual method!"; } -sub DESTROY { +sub all { my ($self) = @_; - $self->{sth}->finish if $self->{sth}->{Active}; + $self->reset; + my @all; + while (my @row = $self->next) { + push(@all, \@row); + } + $self->reset; + return @all; } 1;