my ($self, $sequences, $source_id, $object_type, $db_url) = @_;
my @final_results;
my $dbc;
if (defined $db_url) {
my ($dbconn_part, $driver, $user, $pass, $host, $port, $dbname, $table_name, $tparam_name, $tparam_value, $conn_param_string) =
$db_url =~ m{^((\w*):
-dbname => $dbname,
-user => $user,
-pass => $pass,
-host => $host,
-port => $port);
} else {
$dbc = $self->mapper()->xref()->dbc();
}
my ($sth) = @_;
foreach my $sequence (@{$sequences}) {
my $checksum = uc($self->md5_checksum($sequence));
$sth->execute($checksum, $source_id);
my $upi;
while(my $row = $sth->fetchrow_arrayref()) {
my ($local_upi) = @{$row};
if(defined $upi) {
throw sprintf('The sequence %s had a checksum of %s but this resulted in more than one UPI: [%s, %s]', $sequence->id(), $checksum, $upi, $local_upi);
}
$upi = $local_upi;
}
if(defined $upi){
push(@final_results, { id => $sequence->id(), upi => $upi, object_type => $object_type });
}
}
return;
});
return \@final_results;
}