RSS Git Download  Clone
Raw Blame History
=begin 
  cannot use Feature::Compat::Class, it cannot find DBIx::Simple::Result
  despite using BEGIN block in multiple locations throughout app; from copilot
  chat: You cannot use Feature::Compat::Class directly for the result class if
  DBIx::Simple::Result is not a real module file, so use traditional package
  syntax for the result class.
- `class ... :isa(...)` requires the parent to be a real, loadable module file.
- `DBIx::Simple::Result` is not a real file, so `class ... :isa(DBIx::Simple::Result)` fails.

# use App::Class;
# class App::DB::Result :isa('DBIx::Simple::Result');
=cut

package App::DB::Result; # don't use 'class' syntax, see above

#================================================================================
# new methods row(), column(), value()
#================================================================================

BEGIN { # fix for DBIx::Simple::Result being in same file as DBIx::Simple & not in @INC:
    require DBIx::Simple; # warn $INC{'DBIx/Simple.pm'};
    $INC{'DBIx/Simple/Result.pm'} = $INC{'DBIx/Simple.pm'};
}
use parent 'DBIx::Simple::Result';

# single value:
sub value { my $val = shift->SUPER::list(@_); return $val } # list in scalar context
# more obvious name for 'list', returns array in list context, arrayref in scalar context:
sub row { 
    my @row = shift->SUPER::list(@_); 
    return wantarray ? @row : \@row;
}
# more obvious name for 'flat' (can't use 'list'), returns arrayref in scalar
# context and array in list context:
sub column { shift->SUPER::flat(@_) }

1;