39 lines
923 B
PL/PgSQL
39 lines
923 B
PL/PgSQL
-- 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;
|