camper/revert/set_campsite_type_cost.sql

31 lines
1.1 KiB
PL/PgSQL

-- Deploy camper:set_campsite_type_cost to pg
-- requires: roles
-- requires: schema_camper
-- requires: campsite_type_cost
-- requires: parse_price
begin;
set search_path to camper, public;
drop function if exists set_campsite_type_cost(uuid, integer, text, text, text, text);
create or replace function set_campsite_type_cost(slug uuid, season_id integer, min_nights integer, cost_per_night text, decimal_places integer default 2) returns void as
$$
insert into campsite_type_cost (campsite_type_id, season_id, min_nights, cost_per_night)
select campsite_type_id, season_id, min_nights, parse_price(cost_per_night, decimal_places)
from campsite_type
where campsite_type.slug = set_campsite_type_cost.slug
on conflict (campsite_type_id, season_id) do update
set min_nights = excluded.min_nights
, cost_per_night = excluded.cost_per_night
;
$$
language sql
;
revoke execute on function set_campsite_type_cost(uuid, integer, integer, text, integer) from public;
grant execute on function set_campsite_type_cost(uuid, integer, integer, text, integer) to admin;
commit;