Class::DBI::DataMigration Getting Your Data From There to Here #46

The Solution: A Custom Mapper Class

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;
}
Copyright © 2005 Dan Friedman (Powered by Spork)