--
-- procedure cal_item__delete/1
--
select define_function_args('cal_item__delete','cal_item_id');
create or replace function cal_item__delete(
delete__cal_item_id integer
) returns integer AS $$
declare
v_activity_id integer;
v_recurrence_id integer;
begin
select activity_id, recurrence_id into v_activity_id, v_recurrence_id
from acs_events
where event_id = delete__cal_item_id;
-- Erase the cal_item associated with the id
delete from cal_items
where cal_item_id = delete__cal_item_id;
-- Erase all individual permissions Should be handled via CASCADE;
-- not sure, why this is here.
--
-- delete from acs_permissions
-- where object_id = delete__cal_item_id;
PERFORM acs_event__delete(delete__cal_item_id);
IF NOT acs_event__instances_exist_p(v_recurrence_id) THEN
--
-- There are no more events for the activity, we can clean up
-- both, the activity and - if given - the recurrence.
--
PERFORM acs_activity__delete(v_activity_id);
IF v_recurrence_id is not null THEN
PERFORM recurrence__delete(v_recurrence_id);
END IF;
END IF;
return 0;
end;
$$ LANGUAGE plpgsql;