+ foreach my $needed (qw(ocean island timestamp clientspec serverspec)) {
+ defined $md{$needed} or die "missing metadata $needed\n";
+ }
+
+ my $mid= $entity->head()->get('message-id');
+ defined $mid or die "missing Message-ID\n";
+ chomp($mid);
+ $mid !~ m/[^ -~]/ or die "Message-ID has strange character(s)\n";
+
+ my $tsvpart= find_part('deduped.tsv.gz', 'application/octet-stream',
+ undef);
+ my $tsv= pipethrough_prep();
+ $tsvpart->bodyhandle()->print($tsv);
+ my $pt= pipethrough_run_along($tsv,undef, 'gunzip','gunzip');
+
+ db_setocean($md{'ocean'});
+ my $dbfn= db_filename();
+ (stat $dbfn) or die "stat database $dbfn failed $!\n";
+ db_connect();
+
+ my ($islandid) = $dbh->selectrow_array(
+ "SELECT islands.islandid
+ FROM islands
+ WHERE islandname == ?;
+ ", {}, $md{'island'});
+
+ die "unknown island\n" unless defined $islandid;
+
+ db_doall("DELETE FROM uploads WHERE islandid == $islandid;
+ DELETE FROM buy WHERE islandid == $islandid;
+ DELETE FROM sell WHERE islandid == $islandid;
+ ");