Retain deleted record metadata and provide a #deleted QP modifier
authorMike Rylander <mrylander@gmail.com>
Fri, 8 Mar 2013 19:26:17 +0000 (14:26 -0500)
committerMike Rylander <mrylander@gmail.com>
Fri, 8 Mar 2013 19:26:17 +0000 (14:26 -0500)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
Open-ILS/src/sql/Pg/030.schema.metabib.sql

index 57558e5..f87260c 100644 (file)
@@ -657,6 +657,7 @@ __PACKAGE__->add_search_filter( 'superpage_size' );
 __PACKAGE__->add_search_filter( 'estimation_strategy' );
 __PACKAGE__->add_search_modifier( 'available' );
 __PACKAGE__->add_search_modifier( 'staff' );
+__PACKAGE__->add_search_modifier( 'deleted' );
 __PACKAGE__->add_search_modifier( 'lucky' );
 
 # Start from container data (bre, acn, acp): container(bre,bookbag,123,deadb33fdeadb33fdeadb33fdeadb33f)
@@ -863,11 +864,17 @@ sub toSQL {
     # Limit stuff
     my $limit_where = <<"    SQL";
 -- Filter records based on visibility
+        AND NOT bre.deleted
         AND (
             cbs.transcendant IS TRUE
             OR
     SQL
-    if ($self->find_modifier('staff')) {
+
+    if ($self->find_modifier('deleted')) {
+        $limit_where = <<"        SQL";
+            AND bre.deleted
+        SQL
+    } elsif ($self->find_modifier('staff')) {
         $limit_where .= <<"        SQL";
             EXISTS(
                 SELECT 1 FROM asset.call_number cn
index 6d96938..2eb9f9e 100644 (file)
@@ -1173,8 +1173,9 @@ DECLARE
 BEGIN
 
     IF NEW.deleted IS TRUE THEN -- If this bib is deleted
-        DELETE FROM metabib.metarecord_source_map WHERE source = NEW.id; -- Rid ourselves of the search-estimate-killing linkage
-        DELETE FROM metabib.record_attr WHERE id = NEW.id; -- Kill the attrs hash, useless on deleted records
+        -- XXX we need to keep these around to support searches with the #deleted modifier
+        -- DELETE FROM metabib.metarecord_source_map WHERE source = NEW.id; -- Rid ourselves of the search-estimate-killing linkage
+        -- DELETE FROM metabib.record_attr WHERE id = NEW.id; -- Kill the attrs hash, useless on deleted records
         DELETE FROM authority.bib_linking WHERE bib = NEW.id; -- Avoid updating fields in bibs that are no longer visible
         DELETE FROM biblio.peer_bib_copy_map WHERE peer_record = NEW.id; -- Separate any multi-homed items
         DELETE FROM metabib.browse_entry_def_map WHERE source = NEW.id; -- Don't auto-suggest deleted bibs