IMPORTANT: make deletes work for zebraqueue daemon
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This commit is contained in:
parent
1fd2b1d363
commit
e4a3b4b89e
1 changed files with 21 additions and 24 deletions
|
@ -80,20 +80,22 @@ sub zebraop {
|
||||||
warn "Inside while loop" if $debug;
|
warn "Inside while loop" if $debug;
|
||||||
eval {
|
eval {
|
||||||
my $ok = 0;
|
my $ok = 0;
|
||||||
|
my $record;
|
||||||
if ($data->{'operation'} =~ /delete/i ){
|
if ($data->{'operation'} =~ /delete/i ){
|
||||||
eval {
|
eval {
|
||||||
|
|
||||||
warn "Searching for record to delete" if $debug;
|
warn "Searching for record to delete" if $debug;
|
||||||
# 1st read the record in zebra, we have to get it from zebra as its no longer in the db
|
# 1st read the record in zebra, we have to get it from zebra as its no longer in the db
|
||||||
my $Zconn=C4::Context->Zconn($data->{'server'}, 0, 1,'','xml');
|
my $Zconn=C4::Context->Zconn($data->{'server'}, 0, 1,'','xml');
|
||||||
my $query = $Zconn->search_pqf( '@attr 1=Local-number '.$data->{'biblio_auth_number'});
|
my $results = $Zconn->search_pqf( '@attr 1=Local-number '.$data->{'biblio_auth_number'});
|
||||||
|
$results->option(elementSetName => 'marcxml');
|
||||||
# then, delete the record
|
$record = $results->record(0)->raw();
|
||||||
warn "Deleting record" if $debug;
|
|
||||||
$ok=zebrado($query->record(0)->render(),$data->{'operation'},$data->{'server'},$data->{'biblio_auth_number'});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if ($@) {
|
if ($@) {
|
||||||
|
# this doesn't exist, so no need to wail on zebra to delete it
|
||||||
|
if ($@->code() eq 13) {
|
||||||
|
$ok = 1;
|
||||||
|
} else {
|
||||||
# caught a ZOOM::Exception
|
# caught a ZOOM::Exception
|
||||||
my $error =
|
my $error =
|
||||||
$@->message() . " ("
|
$@->message() . " ("
|
||||||
|
@ -101,17 +103,12 @@ sub zebraop {
|
||||||
. $@->addinfo() . " "
|
. $@->addinfo() . " "
|
||||||
. $@->diagset();
|
. $@->diagset();
|
||||||
warn "ERROR: $error";
|
warn "ERROR: $error";
|
||||||
# this doesn't exist, so no need to wail on zebra to delete it
|
|
||||||
if ($@->code() eq 13) {
|
|
||||||
$ok = 1;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
# then, delete the record
|
||||||
|
warn "Deleting record" if $debug;
|
||||||
|
$ok=zebrado($record,$data->{'operation'},$data->{'server'},$data->{'biblio_auth_number'});
|
||||||
}
|
}
|
||||||
#if ($ok == 1) {
|
|
||||||
# my $delsth=$dbh->prepare("UPDATE zebraqueue SET done=1 WHERE id =?");
|
|
||||||
# $delsth->execute($data->{'id'});
|
|
||||||
# next;
|
|
||||||
#}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# it is an update
|
# it is an update
|
||||||
|
@ -146,7 +143,7 @@ sub zebraop {
|
||||||
# did a modif (or item deletion) just before biblio deletion, there are some specialUpdate
|
# did a modif (or item deletion) just before biblio deletion, there are some specialUpdate
|
||||||
# that are pending and can't succeed, as we don't have the XML anymore
|
# that are pending and can't succeed, as we don't have the XML anymore
|
||||||
# so, delete everything for this biblionumber
|
# so, delete everything for this biblionumber
|
||||||
if ($data->{'operation'} eq 'delete_record') {
|
if ($data->{'operation'} =~ /delete/i) {
|
||||||
$delsth =$dbh->prepare("UPDATE zebraqueue SET done=1 WHERE biblio_auth_number =?");
|
$delsth =$dbh->prepare("UPDATE zebraqueue SET done=1 WHERE biblio_auth_number =?");
|
||||||
$delsth->execute($data->{'biblio_auth_number'});
|
$delsth->execute($data->{'biblio_auth_number'});
|
||||||
# if it's not a deletion, delete every pending specialUpdate for this biblionumber
|
# if it's not a deletion, delete every pending specialUpdate for this biblionumber
|
||||||
|
|
Loading…
Reference in a new issue