The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package DBICTest::Schema::ResultSet::Artist;

use Moose;
use Method::Signatures::Simple;
extends 'DBICTest::Schema::ResultSet';

method with_substr_multi () {
  $self->_with_meta_hash( 
    sub {
      my $row = shift;
      my $substr = substr($row->{name}, 0, 3);
      my $substr2 = substr($row->{name}, 0, 4);
      $row->{substr} = $substr;
      $row->{substr2} = $substr2;
      return $row;
    }
  );
  return $self;
}

method with_substr_multi_object () {
  $self->_with_object_meta_hash( 
    sub {
      my ($row_hash, $row_object) = @_;
      my $substr = substr($row_object->name, 0, 3);
      my $substr2 = substr($row_object->name, 0, 4);
      my $row = {
        substr => $substr,
        substr2 => $substr2,
      };
      return $row;
    }
  );
  return $self;
}

method with_substr_key () {
  $self->_with_meta_key( 
    substr => sub {
      return substr(shift->{name}, 0, 3);
    }
  );
  return $self;
}

method with_substr_key_obj () {
  $self->_with_object_meta_key( 
    substr => sub {
      my ($hash, $obj) = @_;
      return substr($obj->name, 0, 3);
    }
  );
  return $self;
}

method with_substr_old () {
  foreach my $row ($self->all) {
    my $substr = substr($row->name, 0, 3);
    $self->add_row_info(row => $row, info => { substr => $substr });
  }
  return $self;
}

1;