--
-- acs_event__shift/3
--
create or replace function acs_event__shift(
  integer,
  interval,
  interval
) returns int4 as $$

declare
       shift__event_id      alias for $1; -- default null,
       shift__start_offset  alias for $2; -- default 0,
       shift__end_offset    alias for $3; -- default 0
       rec_events	    record;
begin

--       update acs_events_dates
--       set    start_date = start_date + shift__start_offset,
--             end_date   = end_date + shift__end_offset
--       where  event_id   = shift__event_id;

	  -- Can not update view, so we do it the hard way 
	  -- (as if we make the rule anyways)
	  for rec_events in
	      select t.*
	      from acs_events e, timespans s, time_intervals t
	      where e.event_id   = shift__event_id
	      and   e.timespan_id = s.timespan_id
	      and   s.interval_id = t.interval_id
          loop
	       update time_intervals
	       set    start_date = start_date + shift__start_offset,
		      end_date   = end_date + shift__end_offset
	       where  interval_id = rec_events.interval_id;
	  end loop;

       return 0;

end;$$ language plpgsql;


--
-- acs_event__shift/3
--
create or replace function acs_event__shift(
  integer,
  integer,
  integer
) returns int4 as $$

declare
       shift__event_id        alias for $1; -- default null,
       shift__start_offset    alias for $2; -- default 0,
       shift__end_offset      alias for $3; -- default 0
begin
	
       return acs_event__shift (
	            shift__event_id,
	            to_interval(shift__start_offset,'days'),
	            to_interval(shift__end_offset,'days')
		    );
				    
end;$$ language plpgsql;