valintaperusteet
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
kopioi_laskentakaavaviitteet(funktiokutsu jsonb, kartta jsonb)
Description
Korvaa funktiokutsu-puun laskentakaavaChild-viittaukset annetun vanha id -> uusi id -kartan mukaan.
Parameters
Name
Type
Mode
funktiokutsu
jsonb
IN
kartta
jsonb
IN
Definition
DECLARE tulos jsonb; avain text; arvo jsonb; uusi jsonb; BEGIN IF funktiokutsu IS NULL THEN RETURN NULL; END IF; CASE jsonb_typeof(funktiokutsu) WHEN 'array' THEN RETURN (SELECT coalesce(jsonb_agg(kopioi_laskentakaavaviitteet(alkio, kartta)), '[]'::jsonb) FROM jsonb_array_elements(funktiokutsu) AS alkio); WHEN 'object' THEN tulos := '{}'::jsonb; FOR avain, arvo IN SELECT * FROM jsonb_each(funktiokutsu) LOOP IF avain = 'laskentakaavaChild' AND jsonb_typeof(arvo) = 'object' AND arvo ? 'id' THEN uusi := kartta -> (arvo ->> 'id'); IF uusi IS NULL THEN tulos := tulos || jsonb_build_object(avain, arvo); ELSE tulos := tulos || jsonb_build_object(avain, jsonb_build_object('id', uusi)); END IF; ELSE tulos := tulos || jsonb_build_object(avain, kopioi_laskentakaavaviitteet(arvo, kartta)); END IF; END LOOP; RETURN tulos; ELSE RETURN funktiokutsu; END CASE; END;