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