EG install scripts: typo fix
[sitka/sitka-tools.git] / marc_import_overdrive / overdrive-ingest-db-func.sql
index 51cadeb..0f95708 100755 (executable)
@@ -1,4 +1,4 @@
-CREATE OR REPLACE FUNCTION sitka.overdrive_MARCXML_delete_all_uri_fields( TEXT ) RETURNS TEXT AS $func$
+CREATE OR REPLACE FUNCTION sitka.overdrive_bc_delete_all_uri_fields( TEXT ) RETURNS TEXT AS $func$
     use MARC::Record;
     use MARC::File::XML (BinaryEncoding => 'UTF-8');
 
@@ -13,7 +13,7 @@ CREATE OR REPLACE FUNCTION sitka.overdrive_MARCXML_delete_all_uri_fields( TEXT )
         next URIFIELD if ($uri->subfield('3')); 
 
         # otherwise, delete away
-        $r->delete_fields($uri);
+        $r->delete_field($uri);
     }
 
     $xml = $r->as_xml_record();
@@ -23,7 +23,7 @@ CREATE OR REPLACE FUNCTION sitka.overdrive_MARCXML_delete_all_uri_fields( TEXT )
     return $xml;
 $func$ LANGUAGE PLPERLU;
 
-CREATE OR REPLACE FUNCTION sitka.overdrive_MARCXML_add_uri_field( TEXT, TEXT, TEXT, TEXT, TEXT ) RETURNS TEXT AS $func$
+CREATE OR REPLACE FUNCTION sitka.overdrive_bc_add_uri_field( TEXT, TEXT, TEXT, TEXT, TEXT ) RETURNS TEXT AS $func$
     use MARC::Record;
     use MARC::File::XML (BinaryEncoding => 'UTF-8');
 
@@ -48,7 +48,7 @@ CREATE OR REPLACE FUNCTION sitka.overdrive_MARCXML_add_uri_field( TEXT, TEXT, TE
     my $field856 = MARC::Field->new(
             '856' => ('4', '0'),
             u => $url_prefix . $tcn,
-            z => $uri_caption,
+            y => $uri_caption,
             9 => $shortname
     );
 
@@ -73,7 +73,7 @@ DECLARE
        urlprefix TEXT := 'http://downloads.bclibrary.ca/ContentDetails.htm?ID=';
        urlcaption TEXT := 'Click to access online (library card required)';
 BEGIN
-    EXECUTE SELECT sitka.overdrive_MARCXML_delete_all_uri_fields(marc) FROM biblio.record_entry where id = rid INTO marcxml;
+    SELECT sitka.overdrive_bc_delete_all_uri_fields(marc) FROM biblio.record_entry where id = rid INTO marcxml;
 
        -- clean out asset.call_number and asset.uri and asset.uri_call_number_map
 
@@ -82,15 +82,68 @@ BEGIN
        -- from actor.org_unit_setting b join actor.org_unit a on (a.id = b.org_unit) where b.name = 'sitka.overdrive_setting' and b.value = true
        -- something like that
 
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'BBGVL') INTO marcxml;
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'BBNCLF') INTO marcxml;
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'BCK') INTO marcxml;
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'BNCLF') INTO marcxml;
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'BNELF') INTO marcxml;
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'ISLANDLINK') INTO marcxml;
-       EXECUTE SELECT sitka.overdrive_bc_add_uri_field (rid, tcnprefix, urlprefix, urlcaption, 'UNFEDERATED') INTO marcxml;
+       SELECT sitka.overdrive_bc_add_uri_field(marcxml::TEXT, tcnprefix::TEXT, urlprefix::TEXT, urlcaption::TEXT, shortname::TEXT) FROM sitka.bc_overdrive_subscribers INTO marcxml;
 
-    EXECUTE UPDATE biblio.record_entry set marc = marcxml WHERE id = rid;
+    UPDATE biblio.record_entry set marc = marcxml WHERE id = rid;
        return true;
 END;
-$$ LANGUAGE PLPGSQL IMMUTABLE;
+$$ LANGUAGE PLPGSQL;
+
+CREATE TABLE sitka.bc_overdrive_subscribers (shortname TEXT);
+INSERT INTO sitka.bc_overdrive_subscribers VALUES
+('BB'),
+('BNV'),
+('BMV'),
+('BVA'),
+('BPE'),
+('BCOQ'),
+('BNW'),
+('BSUR'),
+('BNVD'),
+('BBI'),
+('BSQ'),
+('BW'),
+('BRI'),
+('BABF'),
+('BLP'),
+('BGIBSE'),
+('BPMP'),
+('BMB'),
+('BVDH'),
+('BFSJA'),
+('BPG'),
+('BWLCR'),
+('BMK'),
+('BGSI'),
+('BCR'),
+('BVI'),
+('BS'),
+('BFN'),
+('BPRDP'),
+('BTA'),
+('BNA'),
+('BF'),
+('BH'),
+('BSPA'),
+('BHA'),
+('BTR'),
+('BHH'),
+('BPR'),
+('BCHE'),
+('BKASL'),
+('BFSJ'),
+('BR'),
+('BFBV'),
+('BKI'),
+('BCD'),
+('BIN'),
+('BGF'),
+('BSA'),
+('BNE'),
+('BT'),
+('BTE'),
+('BCRE'),
+('BKO'),
+('BP'),
+('BKCT'),
+('BNVI');