The Solution: A Custom Mapper Class
- Use the hook to do something more fancy:
package Legacy::Mapper::GamesToGame;
use base qw/Class::DBI::DataMigration::Mapper/;
use New::DBI::User;
use New::DBI::GameEdits;
use DateTime;
sub _create_or_edit_object {
my ($self, $source_object, $newobj_data) = @_;
# Use SUPER to build a new game:
my $game = $self->SUPER::_create_or_edit_object($source_object, $newobj_data);
# Find the User with which we'll initialize our GameEdits object:
my $legacy_user = $source_object->game_usersubmitid;
my $user = New::DBI::User->search(
legacy_user_id => $legacy_user->id)->next;
# Create new GameEdits object:
my $edit = New::DBI::GameEdits->create({
edited_row => $game->id,
subscriber => $user,
submission_datetime => DateTime->now
});
return $game;
}