]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0748.function.update_coded_value_map.sql
LP#1638299: Stamping upgrade scripts for authority infrastructure work
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0748.function.update_coded_value_map.sql
1 -- LP#1091831 - reapply config.update_coded_value_map()
2 -- due to broken schema version
3 --
4 BEGIN;
5
6 -- check whether patch can be applied
7 SELECT evergreen.upgrade_deps_block_check('0748', :eg_version);
8
9 CREATE OR REPLACE FUNCTION config.update_coded_value_map(in_ctype TEXT, in_code TEXT, in_value TEXT, in_description TEXT DEFAULT NULL, in_opac_visible BOOL DEFAULT NULL, in_search_label TEXT DEFAULT NULL, in_is_simple BOOL DEFAULT NULL, add_only BOOL DEFAULT FALSE) RETURNS VOID AS $f$
10 DECLARE
11     current_row config.coded_value_map%ROWTYPE;
12 BEGIN
13     -- Look for a current value
14     SELECT INTO current_row * FROM config.coded_value_map WHERE ctype = in_ctype AND code = in_code;
15     -- If we have one..
16     IF FOUND AND NOT add_only THEN
17         -- Update anything we were handed
18         current_row.value := COALESCE(current_row.value, in_value);
19         current_row.description := COALESCE(current_row.description, in_description);
20         current_row.opac_visible := COALESCE(current_row.opac_visible, in_opac_visible);
21         current_row.search_label := COALESCE(current_row.search_label, in_search_label);
22         current_row.is_simple := COALESCE(current_row.is_simple, in_is_simple);
23         UPDATE config.coded_value_map
24             SET
25                 value = current_row.value,
26                 description = current_row.description,
27                 opac_visible = current_row.opac_visible,
28                 search_label = current_row.search_label,
29                 is_simple = current_row.is_simple
30             WHERE id = current_row.id;
31     ELSE
32         INSERT INTO config.coded_value_map(ctype, code, value, description, opac_visible, search_label, is_simple) VALUES
33             (in_ctype, in_code, in_value, in_description, COALESCE(in_opac_visible, TRUE), in_search_label, COALESCE(in_is_simple, FALSE));
34     END IF;
35 END;
36 $f$ LANGUAGE PLPGSQL;
37
38 COMMIT;