Restore ability to handle underdefined root (t/prefetch/incomplete.t)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Cursor.pm
1 package DBIx::Class::Cursor;
2
3 use strict;
4 use warnings;
5
6 use base qw/DBIx::Class/;
7
8 =head1 NAME
9
10 DBIx::Class::Cursor - Abstract object representing a query cursor on a
11 resultset.
12
13 =head1 SYNOPSIS
14
15   my $cursor = $schema->resultset('CD')->cursor();
16
17   # raw values off the database handle in resultset columns/select order
18   my @next_cd_column_values = $cursor->next;
19
20   # list of all raw values as arrayrefs
21   my @all_cds_column_values = $cursor->all;
22
23 =head1 DESCRIPTION
24
25 A Cursor represents a query cursor on a L<DBIx::Class::ResultSet> object. It
26 allows for traversing the result set with L</next>, retrieving all results with
27 L</all> and resetting the cursor with L</reset>.
28
29 Usually, you would use the cursor methods built into L<DBIx::Class::ResultSet>
30 to traverse it. See L<DBIx::Class::ResultSet/next>,
31 L<DBIx::Class::ResultSet/reset> and L<DBIx::Class::ResultSet/all> for more
32 information.
33
34 =head1 METHODS
35
36 =head2 new
37
38 Virtual method. Returns a new L<DBIx::Class::Cursor> object.
39
40 =cut
41
42 sub new {
43   die "Virtual method!";
44 }
45
46 =head2 next
47
48 Virtual method. Advances the cursor to the next row. Returns an array of
49 column values (the result of L<DBI/fetchrow_array> method).
50
51 =cut
52
53 sub next {
54   die "Virtual method!";
55 }
56
57 =head2 reset
58
59 Virtual method. Resets the cursor to the beginning.
60
61 =cut
62
63 sub reset {
64   die "Virtual method!";
65 }
66
67 =head2 all
68
69 Virtual method. Returns all rows in the L<DBIx::Class::ResultSet>.
70
71 =cut
72
73 sub all {
74   my ($self) = @_;
75   $self->reset;
76   my @all;
77   while (my @row = $self->next) {
78     push(@all, \@row);
79   }
80   $self->reset;
81   return @all;
82 }
83
84 1;