camper/deploy/translate_campsite_type.sql

35 lines
1.8 KiB
PL/PgSQL

-- Deploy camper:translate_campsite_type to pg
-- requires: roles
-- requires: schema_camper
-- requires: campsite_type_i18n
begin;
set search_path to camper, public;
drop function if exists translate_campsite_type (uuid, text, text, text, text, text, text, text);
create or replace function translate_campsite_type (slug uuid, lang_tag text, name text, spiel text, info text, facilities text, description text, additional_info text, check_in text, check_out text) returns void as
$$
insert into campsite_type_i18n (campsite_type_id, lang_tag, name, spiel, info, facilities, description, additional_info, check_in, check_out)
select campsite_type_id, translate_campsite_type.lang_tag, translate_campsite_type.name, xmlparse(content coalesce(translate_campsite_type.spiel, '')), xmlparse(content coalesce(translate_campsite_type.info, '')), xmlparse(content coalesce(translate_campsite_type.facilities, '')), xmlparse(content coalesce(translate_campsite_type.description, '')), xmlparse(content coalesce(translate_campsite_type.additional_info, '')), coalesce(translate_campsite_type.check_in, ''), coalesce(translate_campsite_type.check_out, '')
from campsite_type
where slug = translate_campsite_type.slug
on conflict (campsite_type_id, lang_tag) do update
set name = excluded.name
, spiel = excluded.spiel
, info = excluded.info
, facilities = excluded.facilities
, description = excluded.description
, additional_info = excluded.additional_info
, check_in = excluded.check_in
, check_out = excluded.check_out
$$
language sql
;
revoke execute on function translate_campsite_type (uuid, text, text, text, text, text, text, text, text, text) from public;
grant execute on function translate_campsite_type(uuid, text, text, text, text, text, text, text, text, text) to admin;
commit;