RETURNS TABLE (id BIGINT, name TEXT, label_sortkey TEXT, rank INT)
AS $$ SELECT * FROM evergreen.located_uris(ARRAY[$1],$2,$3) $$ LANGUAGE SQL STABLE;
--- SEED DATA ---------------------------------------------------------------
-
-INSERT INTO config.global_flag (name, label, value, enabled) VALUES (
- 'opac.metarecord.holds.format_attr',
- oils_i18n_gettext(
- 'opac.metarecord.holds.format_attr',
- 'OPAC Metarecord Hold Formats Attribute',
- 'cgf',
- 'label'
- ),
- 'icon_format',
- TRUE
-);
-
-INSERT INTO config.record_attr_definition
- (name, label, multi, filter, composite)
-VALUES (
- 'metarecord_hold_format',
- oils_i18n_gettext(
- 'metarecord_hold_format',
- 'Metarecord Hold Formats',
- 'crad',
- 'label'
- ),
- TRUE, TRUE, TRUE
-);
-
--- these formats are take verbatim from the JSPAC MR hold format selector
-
--- 587 is where the composite icon attrs leave off
-
-/*
-INSERT INTO config.coded_value_map
- (id, ctype, code, value, search_label) VALUES
-(588, 'metarecord_hold_format', 'book',
- oils_i18n_gettext(588, 'Books', 'ccvm', 'value'),
- oils_i18n_gettext(588, 'Books', 'ccvm', 'search_label'));
-(589, 'metarecord_hold_format', 'ebook',
- oils_i18n_gettext(588, 'Books', 'ccvm', 'value'),
- oils_i18n_gettext(588, 'Books', 'ccvm', 'search_label'));
-
-(589, 'metarecord_hold_format', 'lpbook', 'Large Print Books','Large Print Books'),
-(590, 'metarecord_hold_format', 'ebook', 'E-Books', 'E-Books'),
-(592, 'metarecord_hold_format', 'audiobook', 'Audiobooks', 'Audiobooks'),
-(593, 'metarecord_hold_format', 'video', 'Video Recordings', 'Video Recordings'),
-(594, 'metarecord_hold_format', 'music', 'Music', 'Music');
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-SELECT ccvm.id,
-'[{"_attr":"item_type","_val":"a"},{"_attr":"item_type","_val":"t"}]'
-FROM config.coded_value_map ccvm
-WHERE ccvm.ctype = 'metarecord_hold_format' AND ccvm.code = 'book';
-
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-SELECT ccvm.id,
-'[{"_attr":"item_type","_val":"a"},{"_attr":"item_type","_val":"t"},{"_attr":"item_form","_val":"d"}]'
-FROM config.coded_value_map ccvm
-WHERE ccvm.ctype = 'metarecord_hold_format' AND ccvm.code = 'large_print_book';
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-SELECT ccvm.id,
-'[{"_attr":"item_type","_val":"a"},{"_attr":"item_type","_val":"t"},{"_attr":"item_form","_val":"s"}]'
-FROM config.coded_value_map ccvm
-WHERE ccvm.ctype = 'metarecord_hold_format' AND ccvm.code = 'e-book';
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-SELECT ccvm.id, '{"_attr":"item_type","_val":"i"}'
-FROM config.coded_value_map ccvm
-WHERE ccvm.ctype = 'metarecord_hold_format' AND ccvm.code = 'audiobook';
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-SELECT ccvm.id, '{"_attr":"item_type","_val":"g"}'
-FROM config.coded_value_map ccvm
-WHERE ccvm.ctype = 'metarecord_hold_format' AND ccvm.code = 'video_recording';
-
-INSERT INTO config.composite_attr_entry_definition (coded_value, definition)
-SELECT ccvm.id, '{"_attr":"item_type","_val":"j"}'
-FROM config.coded_value_map ccvm
-WHERE ccvm.ctype = 'metarecord_hold_format' AND ccvm.code = 'music';
-
-*/
-
-
COMMIT;
--- /dev/null
+BEGIN;
+
+INSERT INTO config.global_flag (name, label, value, enabled) VALUES (
+ 'opac.metarecord.holds.format_attr',
+ oils_i18n_gettext(
+ 'opac.metarecord.holds.format_attr',
+ 'OPAC Metarecord Hold Formats Attribute',
+ 'cgf',
+ 'label'
+ ),
+ 'mr_hold_format',
+ TRUE
+);
+
+INSERT INTO config.record_attr_definition
+ (name, label, multi, filter, composite)
+VALUES (
+ 'mr_hold_format',
+ oils_i18n_gettext(
+ 'mr_hold_format',
+ 'Metarecord Hold Formats',
+ 'crad',
+ 'label'
+ ),
+ TRUE, TRUE, TRUE
+);
+
+-- these formats are a subset of the "icon_format" attribute,
+-- modified to exclude electronic resources, which are not holdable
+
+-- for i18n purposes, these have to be listed individually
+INSERT INTO config.coded_value_map
+ (id, ctype, code, value, search_label) VALUES
+(588, 'mr_hold_format', 'book',
+ oils_i18n_gettext(588, 'Book', 'ccvm', 'value'),
+ oils_i18n_gettext(588, 'Book', 'ccvm', 'search_label')),
+(589, 'mr_hold_format', 'braille',
+ oils_i18n_gettext(589, 'Braille', 'ccvm', 'value'),
+ oils_i18n_gettext(589, 'Braille', 'ccvm', 'search_label')),
+(590, 'mr_hold_format', 'software',
+ oils_i18n_gettext(590, 'Software and video games', 'ccvm', 'value'),
+ oils_i18n_gettext(590, 'Software and video games', 'ccvm', 'search_label')),
+(591, 'mr_hold_format', 'dvd',
+ oils_i18n_gettext(591, 'DVD', 'ccvm', 'value'),
+ oils_i18n_gettext(591, 'DVD', 'ccvm', 'search_label')),
+(592, 'mr_hold_format', 'kit',
+ oils_i18n_gettext(592, 'Kit', 'ccvm', 'value'),
+ oils_i18n_gettext(592, 'Kit', 'ccvm', 'search_label')),
+(593, 'mr_hold_format', 'map',
+ oils_i18n_gettext(593, 'Map', 'ccvm', 'value'),
+ oils_i18n_gettext(593, 'Map', 'ccvm', 'search_label')),
+(594, 'mr_hold_format', 'microform',
+ oils_i18n_gettext(594, 'Microform', 'ccvm', 'value'),
+ oils_i18n_gettext(594, 'Microform', 'ccvm', 'search_label')),
+(595, 'mr_hold_format', 'score',
+ oils_i18n_gettext(595, 'Music Score', 'ccvm', 'value'),
+ oils_i18n_gettext(595, 'Music Score', 'ccvm', 'search_label')),
+(596, 'mr_hold_format', 'picture',
+ oils_i18n_gettext(596, 'Picture', 'ccvm', 'value'),
+ oils_i18n_gettext(596, 'Picture', 'ccvm', 'search_label')),
+(597, 'mr_hold_format', 'equip',
+ oils_i18n_gettext(597, 'Equipment, games, toys', 'ccvm', 'value'),
+ oils_i18n_gettext(597, 'Equipment, games, toys', 'ccvm', 'search_label')),
+(598, 'mr_hold_format', 'serial',
+ oils_i18n_gettext(598, 'Serials and magazines', 'ccvm', 'value'),
+ oils_i18n_gettext(598, 'Serials and magazines', 'ccvm', 'search_label')),
+(599, 'mr_hold_format', 'vhs',
+ oils_i18n_gettext(599, 'VHS', 'ccvm', 'value'),
+ oils_i18n_gettext(599, 'VHS', 'ccvm', 'search_label')),
+(600, 'mr_hold_format', 'cdaudiobook',
+ oils_i18n_gettext(600, 'CD Audiobook', 'ccvm', 'value'),
+ oils_i18n_gettext(600, 'CD Audiobook', 'ccvm', 'search_label')),
+(601, 'mr_hold_format', 'cdmusic',
+ oils_i18n_gettext(601, 'CD Music recording', 'ccvm', 'value'),
+ oils_i18n_gettext(601, 'CD Music recording', 'ccvm', 'search_label')),
+(602, 'mr_hold_format', 'casaudiobook',
+ oils_i18n_gettext(602, 'Cassette audiobook', 'ccvm', 'value'),
+ oils_i18n_gettext(602, 'Cassette audiobook', 'ccvm', 'search_label')),
+(603, 'mr_hold_format', 'casmusic',
+ oils_i18n_gettext(603, 'Audiocassette music recording', 'ccvm', 'value'),
+ oils_i18n_gettext(603, 'Audiocassette music recording', 'ccvm', 'search_label')),
+(604, 'mr_hold_format', 'phonospoken',
+ oils_i18n_gettext(604, 'Phonograph spoken recording', 'ccvm', 'value'),
+ oils_i18n_gettext(604, 'Phonograph spoken recording', 'ccvm', 'search_label')),
+(605, 'mr_hold_format', 'phonomusic',
+ oils_i18n_gettext(605, 'Phonograph music recording', 'ccvm', 'value'),
+ oils_i18n_gettext(605, 'Phonograph music recording', 'ccvm', 'search_label')),
+(606, 'mr_hold_format', 'lpbook',
+ oils_i18n_gettext(606, 'Large Print Book', 'ccvm', 'value'),
+ oils_i18n_gettext(606, 'Large Print Book', 'ccvm', 'search_label'))
+;
+
+-- but we can auto-generate the composite definitions
+
+DO $$
+ DECLARE format TEXT;
+BEGIN
+ FOR format IN SELECT UNNEST(
+ '{book,braille,software,dvd,kit,map,microform,score,picture,equip,serial,vhs,cdaudiobook,cdmusic,casaudiobook,casmusic,phonospoken,phonomusic,lpbook}'::text[]) LOOP
+
+ INSERT INTO config.composite_attr_entry_definition
+ (coded_value, definition) VALUES
+ (
+ -- get the ID from the new ccvm above
+ (SELECT id FROM config.coded_value_map
+ WHERE code = format AND ctype = 'mr_hold_format'),
+ -- get the def of the matching ccvm attached to the icon_format attr
+ (SELECT definition FROM config.composite_attr_entry_definition ccaed
+ JOIN config.coded_value_map ccvm ON (ccaed.coded_value = ccvm.id)
+ WHERE ccvm.ctype = 'icon_format' AND ccvm.code = format)
+ );
+ END LOOP;
+END $$;
+
+COMMIT;
+