=cut
sub next {
- my $self = shift;
+ #my $self = shift;
# using cursor so we don't inflate anything
- my ($row) = $self->_resultset->cursor->next;
-
- return $row;
+ ($_[0]->_resultset->cursor->next)[0];
}
=head2 all
=cut
sub all {
- my $self = shift;
+ #my $self = shift;
# using cursor so we don't inflate anything
- return map { $_->[0] } $self->_resultset->cursor->all;
+ map { $_->[0] } $_[0]->_resultset->cursor->all;
}
=head2 reset
=cut
sub reset {
- my $self = shift;
- $self->_resultset->cursor->reset;
- return $self;
+ #my $self = shift;
+
+ $_[0]->_resultset->reset;
+ $_[0];
}
=head2 first
=cut
-sub first {
- my $self = shift;
+sub first :DBIC_method_is_indirect_sugar {
+ DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
# using cursor so we don't inflate anything
- $self->_resultset->cursor->reset;
- my ($row) = $self->_resultset->cursor->next;
-
- return $row;
+ my $cursor = $_[0]->_resultset->cursor;
+ $cursor->reset;
+ ($cursor->next)[0];
}
=head2 single
=cut
sub single {
- my $self = shift;
+ #my $self = shift;
- my $attrs = $self->_resultset->_resolved_attrs;
- my ($row) = $self->_resultset->result_source->schema->storage->select_single(
- $attrs->{from}, $attrs->{select}, $attrs->{where}, $attrs
- );
+ my $rs = $_[0]->_resultset;
- return $row;
+ my $attrs = $rs->_resolved_attrs;
+ ($rs->result_source->schema->storage->select_single(
+ $attrs->{from}, $attrs->{select}, $attrs->{where}, $attrs
+ ))[0];
}
=head2 min
=cut
-sub func {
- my ($self,$function) = @_;
- my $cursor = $self->func_rs($function)->cursor;
+sub func :DBIC_method_is_indirect_sugar{
+ DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
+
+ #my ($self,$function) = @_;
+ my $cursor = $_[0]->func_rs($_[1])->cursor;
if( wantarray ) {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_WANTARRAY and my $sog = fail_on_internal_wantarray;
$check_fr->[0] =~ /^(?:DBIx::Class|DBICx::)/
and
$check_fr->[1] !~ /\b(?:CDBICompat|ResultSetProxy)\b/ # no point touching there
+ and
+ # one step higher
+ @fr2 = CORE::caller(@fr2 ? 3 : 2)
+ and
+ # if the frame that called us is an indirect itself - nothing to see here
+ ! grep
+ { $_ eq 'DBIC_method_is_indirect_sugar' }
+ do {
+ no strict 'refs';
+ attributes::get( \&{ $fr2[3] })
+ }
) {
DBIx::Class::Exception->throw( sprintf (
"Illegal internal call of indirect proxy-method %s() with argument '%s': examine the last lines of the proxy method deparse below to determine what to call directly instead at %s on line %d\n\n%s\n\n Stacktrace starts",