1 package DBIx::Class::ResultSet;
10 my ($it_class, $db_class, $attrs) = @_;
11 #use Data::Dumper; warn Dumper(@_);
12 $it_class = ref $it_class if ref $it_class;
13 $attrs = { %{ $attrs || {} } };
14 my $cols = [ $db_class->_select_columns ];
15 my $cursor = $db_class->storage->select($db_class->_table_name,$cols,
16 $attrs->{where},$attrs);
21 cond => $attrs->{where},
23 return bless ($new, $it_class);
27 my ($self, $min, $max) = @_;
28 my $attrs = { %{ $self->{attrs} || {} } };
29 $self->{class}->throw("Can't slice without where") unless $attrs->{where};
30 $attrs->{offset} = $min;
31 $attrs->{rows} = ($max ? ($max - $min + 1) : 1);
32 my $slice = $self->new($self->{class}, $attrs);
33 return (wantarray ? $slice->all : $slice);
38 my @row = $self->{cursor}->next;
40 return $self->{class}->_row_to_object($self->{cols}, \@row);
45 return $self->{attrs}{rows} if $self->{attrs}{rows};
46 # This is a hack, and will break on the last page of a paged set.
47 # Once we have limit support in Storage, kill it.
49 my $db_class = $self->{class};
50 my @cols = 'COUNT(*)';
51 my ($c) = $db_class->storage->select_single($db_class->_table_name, \@cols,
52 $self->{cond}, $self->{attrs});
53 return $c; # ($cursor->next)[0];
58 return map { $self->{class}->_row_to_object($self->{cols}, $_); }
64 $self->{cursor}->reset;
69 return $_[0]->reset->next;
74 $_->delete for $self->all;
78 *delete_all = \&delete; # Yeah, yeah, yeah ...