egdb3_12_9
.action
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
process_ingest_queue_entry(qeid bigint)
Parameters
Name
Type
Mode
qeid
bigint
IN
Definition
DECLARE ingest_success BOOL := NULL; qe action.ingest_queue_entry%ROWTYPE; aid authority.record_entry.id%TYPE; BEGIN SELECT * INTO qe FROM action.ingest_queue_entry WHERE id = qeid; IF qe.ingest_time IS NOT NULL OR qe.override_by IS NOT NULL THEN RETURN TRUE; -- Already done END IF; IF qe.action = 'delete' THEN IF qe.record_type = 'biblio' THEN SELECT metabib.indexing_delete(r.*, qe.state_data) INTO ingest_success FROM biblio.record_entry r WHERE r.id = qe.record; ELSIF qe.record_type = 'authority' THEN SELECT authority.indexing_delete(r.*, qe.state_data) INTO ingest_success FROM authority.record_entry r WHERE r.id = qe.record; END IF; ELSE IF qe.record_type = 'biblio' THEN IF qe.action = 'propagate' THEN SELECT authority.apply_propagate_changes(qe.state_data::BIGINT, qe.record) INTO aid; SELECT aid = qe.state_data::BIGINT INTO ingest_success; ELSE SELECT metabib.indexing_update(r.*, qe.action = 'insert', qe.state_data) INTO ingest_success FROM biblio.record_entry r WHERE r.id = qe.record; END IF; ELSIF qe.record_type = 'authority' THEN SELECT authority.indexing_update(r.*, qe.action = 'insert', qe.state_data) INTO ingest_success FROM authority.record_entry r WHERE r.id = qe.record; END IF; END IF; IF NOT ingest_success THEN UPDATE action.ingest_queue_entry SET fail_time = NOW() WHERE id = qe.id; PERFORM * FROM config.internal_flag WHERE name = 'ingest.queued.abort_on_error' AND enabled; IF FOUND THEN RAISE EXCEPTION 'Ingest action of % on %.record_entry % for queue entry % failed', qe.action, qe.record_type, qe.record, qe.id; ELSE RAISE WARNING 'Ingest action of % on %.record_entry % for queue entry % failed', qe.action, qe.record_type, qe.record, qe.id; END IF; ELSE UPDATE action.ingest_queue_entry SET ingest_time = NOW() WHERE id = qe.id; END IF; RETURN ingest_success; END;