--
-- time_interval__edit/3
--
create or replace function time_interval__edit(
integer,
timestamp with time zone,
timestamp with time zone
) returns int4 as $$
declare
edit__interval_id alias for $1;
edit__start_date alias for $2; -- default null,
edit__end_date alias for $3; -- default null
begin
-- JS: I hate deeply nested if-else-ifs!!!
-- Null for start_date or end_date means dont change.
if edit__start_date is not null and edit__end_date is not null then
update time_intervals
set start_date = edit__start_date,
end_date = edit__end_date
where interval_id = edit__interval_id;
end if;
-- Update only the end date if not null even if start date is null
if edit__start_date is not null and edit__end_date is null
then
update time_intervals
set start_date = edit__start_date
where interval_id = edit__interval_id;
end if;
-- Update only the start date if not null even if end date is null
if edit__end_date is not null and edit__start_date is null
then
update time_intervals
set end_date = edit__end_date
where interval_id = edit__interval_id;
end if;
return 0;
end;$$ language plpgsql;