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 ];
18 cond => $attrs->{where},
20 return bless ($new, $it_class);
25 my ($db_class, $attrs) = @{$self}{qw/class attrs/};
26 return $self->{cursor}
27 ||= $db_class->storage->select($db_class->_table_name, $self->{cols},
28 $attrs->{where},$attrs);
32 my ($self, $min, $max) = @_;
33 my $attrs = { %{ $self->{attrs} || {} } };
34 $self->{class}->throw("Can't slice without where") unless $attrs->{where};
35 $attrs->{offset} = $min;
36 $attrs->{rows} = ($max ? ($max - $min + 1) : 1);
37 my $slice = $self->new($self->{class}, $attrs);
38 return (wantarray ? $slice->all : $slice);
43 my @row = $self->cursor->next;
45 return $self->{class}->_row_to_object($self->{cols}, \@row);
50 my $db_class = $self->{class};
52 # offset breaks COUNT(*), so remove it
53 my $attrs = { %{ $self->{attrs} } };
54 delete $attrs->{offset};
56 my @cols = 'COUNT(*)';
57 my ($c) = $db_class->storage->select_single($db_class->_table_name, \@cols,
58 $self->{cond}, $attrs);
60 return ( $attrs->{rows} && $attrs->{rows} < $c )
67 return map { $self->{class}->_row_to_object($self->{cols}, $_); }
78 return $_[0]->reset->next;
83 $_->delete for $self->all;
87 *delete_all = \&delete; # Yeah, yeah, yeah ...