eb8d7b72f8b3e5a29671722872bdd714de135b54
[Evergreen.git] / Evergreen / src / extras / import / load_legacy.sql
1 DROP TABLE joined_legacy;
2 DROP TABLE legacy_copy_status_map;
3
4 BEGIN;
5
6 -- Build the status map ... by hand, which suxorz.
7 CREATE TABLE legacy_copy_status_map (id int, name text);
8 COPY legacy_copy_status_map FROM STDIN;
9 0       ADULT
10 0       AV
11 0       AWARDBOOKS
12 0       BHDESK
13 2       BINDERY
14 0       BIOGRAPHY
15 0       BOOKMOBILE
16 0       BROWSING
17 11      CATALOGING
18 1       CHECKEDOUT
19 0       DATALOAD
20 13      DISCARD
21 0       DISPLAY
22 0       EASY
23 0       EASY-RDR
24 0       FANTASY
25 0       FIC
26 0       FIXLIB
27 0       FOREIGNL
28 0       GA-CIRC
29 0       GENEALOGY
30 0       GEORGIA
31 0       GOV-DOC
32 8       HOLDS
33 10      ILL
34 10      ILS-ILL
35 0       INDEX
36 5       INPROCESS
37 6       INTRANSIT
38 0       JUV
39 0       LEASE
40 0       LG-PRNT
41 0       LIB-CLOSED
42 0       LITERACY
43 0       LONGOVRDUE
44 3       LOST
45 3       LOST-PAID
46 0       MAG
47 0       MAPS
48 4       MISSING
49 0       MYSTERY
50 0       NEW-BKS
51 0       NEWS
52 0       NONFIC
53 0       OFFICE
54 9       ON-ORDER
55 10      ONLOAN
56 0       OVERSIZED
57 0       PBK
58 0       PICTURE
59 0       REF
60 11      REPAIR
61 0       RESERVES
62 7       RESHELVING
63 0       ROTATING
64 0       SCIFI
65 0       SHORTSTORY
66 0       SPEC-COL-R
67 0       SPEC-COLL
68 0       SPECNEEDS
69 0       STACKS
70 0       STATELIBGA
71 0       STORAGE
72 0       THRILLER
73 0       TODDLER
74 0       UNAVAILBLE
75 0       UNKNOWN
76 0       VRTICLFILE
77 0       WEBSITE
78 0       WESTERN
79 0       YA
80 \.
81
82
83 -- First, we build shelving location
84 INSERT INTO asset.copy_location (name, owning_lib)
85         SELECT  DISTINCT l.home_location, ou.id
86           FROM  legacy_item l JOIN actor.org_unit ou
87                         ON (l.owning_library = ou.shortname);
88
89
90 -- Now set their flags
91 UPDATE  asset.copy_location
92   SET   holdable = FALSE
93   WHERE name IN ('BINDERY','DISCARD','GENEALOGY','GOV-DOC','INDEX',
94                  'LIB-CLOSED','LONGOVERDUE','LOST','LOST-PAID','MAG',
95                  'NEWS','ONLOAN','REF','REPAIR','SPEC-COL-R');
96
97 UPDATE  asset.copy_location
98   SET   opac_visible = FALSE
99   WHERE name IN ('DATALOA','DISCARD','FIXLIB','LIB-CLOSED', 'LONGOVERDUE',
100                  'LOST','LOST-PAID','STORAGE', 'UNKNOWN');
101
102
103 -- Now the old stat-cat stuff
104 INSERT INTO asset.stat_cat (owner, name) VALUES (1, 'Legacy CAT1');
105 INSERT INTO asset.stat_cat_entry (stat_cat, owner, value)
106         SELECT  DISTINCT currval('asset.stat_cat_id_seq'::regclass), 1, cat_1
107           FROM  legacy_item;
108
109 INSERT INTO asset.stat_cat (owner, name) VALUES (1, 'Legacy CAT2');
110 INSERT INTO asset.stat_cat_entry (stat_cat, owner, value)
111         SELECT  DISTINCT currval('asset.stat_cat_id_seq'::regclass), 1, cat_2
112           FROM  legacy_item;
113
114
115 -- Create a temp table to speed up CN and copy inserts
116 CREATE TABLE joined_legacy AS
117         SELECT  i.*, c.call_num
118           FROM  legacy_item i
119                 JOIN legacy_callnum c USING (cat_key,call_key);
120
121 CREATE INDEX lj_cat_call_idx ON joined_legacy (cat_key,call_key);
122
123 -- Import the call numbers
124 -- Getting the owning lib from the first available copy on the CN
125 INSERT INTO asset.call_number (creator,editor,record,label,owning_lib)
126         SELECT  DISTINCT 1, 1, l.cat_key , l.call_num, ou.id
127           FROM  joined_legacy l
128                 JOIN biblio.record_entry b ON (cat_key = b.id)
129                 JOIN actor.org_unit ou ON (l.owning_library = ou.shortname);
130
131
132
133 -- Import base copy data
134 INSERT INTO asset.copy (circ_lib,creator,editor,create_date,barcode,status,location,loan_duration,fine_level,opac_visible,price,circ_modifier,call_number, alert_message)
135         SELECT  DISTINCT ou.id AS circ_lib,
136                 1 AS creator,
137                 1 AS editor,
138                 l.creation_date AS create_date,
139                 l.item_id AS barcode,
140                 s_map.id AS status,
141                 cl.id AS location,
142                 2 AS loan_duration,
143                 2 AS fine_level,
144                 CASE WHEN l.shadow IS TRUE THEN FALSE ELSE TRUE END AS opac_visible,
145                 (l.price/100::numeric)::numeric(8,2) AS price,
146                 l.item_type AS circ_modifier,
147                 cn.id AS call_number,
148                 pc.cnt || ' pieces' as alert_message
149           FROM  joined_legacy l
150                 JOIN legacy_copy_status_map s_map
151                         ON (s_map.name = l.current_location)
152                 JOIN actor.org_unit ou
153                         ON (l.owning_library = ou.shortname)
154                 JOIN asset.copy_location cl
155                         ON (ou.id = cl.owning_lib AND l.home_location = cl.name)
156                 JOIN asset.call_number cn
157                         ON (ou.id = cn.owning_lib AND l.cat_key = cn.record AND l.call_num = cn.label)
158                 LEFT JOIN legacy_piece_count pc ON (pc.barcode = l.item_id);
159
160 -- Move copy notes into the notes table ... non-public
161 INSERT INTO asset.copy_note (owning_copy,creator,title,value)
162         SELECT  cp.id,
163                 1,
164                 'Legacy Note',
165                 l.item_comment
166           FROM  legacy_item l
167                 JOIN asset.copy cp ON (cp.barcode = l.item_id)
168           WHERE l.item_comment IS NOT NULL
169                 AND l.item_comment <> '';
170
171 COMMIT;
172