]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0615.schema.generic-mapping-index-normalizer.sql
Stamping upgrade for relaxing rank_ou sorting
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0615.schema.generic-mapping-index-normalizer.sql
1 -- Evergreen DB patch XXXX.schema.generic-mapping-index-normalizer.sql
2 --
3 BEGIN;
4
5 -- check whether patch can be applied
6 SELECT evergreen.upgrade_deps_block_check('0615', :eg_version);
7
8 -- evergreen.generic_map_normalizer 
9
10 CREATE OR REPLACE FUNCTION evergreen.generic_map_normalizer ( TEXT, TEXT ) RETURNS TEXT AS $f$
11 my $string = shift;
12 my %map;
13
14 my $default = $string;
15
16 $_ = shift;
17 while (/^\s*?(.*?)\s*?=>\s*?(\S+)\s*/) {
18     if ($1 eq '') {
19         $default = $2;
20     } else {
21         $map{$2} = [split(/\s*,\s*/, $1)];
22     }
23     $_ = $';
24 }
25
26 for my $key ( keys %map ) {
27     return $key if (grep { $_ eq $string } @{ $map{$key} });
28 }
29
30 return $default;
31
32 $f$ LANGUAGE PLPERLU;
33
34 -- evergreen.generic_map_normalizer 
35
36 INSERT INTO config.index_normalizer (name, description, func, param_count) VALUES (
37     'Generic Mapping Normalizer', 
38     'Map values or sets of values to new values',
39     'generic_map_normalizer', 
40     1
41 );
42
43 COMMIT;