camper/deploy/set_season_range.sql

39 lines
923 B
MySQL
Raw Normal View History

-- Deploy camper:set_season_range to pg
-- requires: roles
-- requires: schema_camper
-- requires: season_calendar
-- requires: unset_season_range
begin;
set search_path to camper, public;
create or replace function set_season_range(szn_id integer, range daterange) returns void as
$$
declare
tmp_range daterange;
begin
select daterange(min(lower(season_range)), max(upper(season_range)))
into tmp_range
from season_calendar
where season_id = szn_id
and (season_range && range or season_range -|- range)
;
if not lower_inf(tmp_range) and not upper_inf(tmp_range) then
range := range + tmp_range;
end if;
perform unset_season_range(range);
insert into season_calendar (season_id, season_range)
values (szn_id, range);
end
$$
language plpgsql
;
revoke execute on function set_season_range(integer, daterange) from public;
grant execute on function set_season_range(integer, daterange) to admin;
commit;