--
-- fs_package_items_delete_trig/0
--
create or replace function fs_package_items_delete_trig(
  
) returns trigger as $$

declare

	v_rec	record;
begin

	for v_rec in
	
		-- We want to delete all cr_items entries, starting from the leaves all
		--  the way up the root folder (old.folder_id).
		select c1.item_id, c1.content_type
		from cr_items c1, cr_items c2
                where c2.item_id = old.folder_id
		  and c1.tree_sortkey between c2.tree_sortkey and tree_right(c2.tree_sortkey)
		  and c1.item_id <> old.folder_id
                order by c1.tree_sortkey desc
	loop


		-- We delete the item. On delete cascade should take care
		-- of deletion of revisions.
		if v_rec.content_type = 'file_storage_object'
		then
		    raise notice 'Deleting item_id = %',v_rec.item_id;
		    PERFORM content_item__delete(v_rec.item_id);
		end if;

		-- Instead of doing an if-else, we make sure we are deleting a folder.
		if v_rec.content_type = 'content_folder'
		then
		    raise notice 'Deleting folder_id = %',v_rec.item_id;
		    PERFORM content_folder__delete(v_rec.item_id);
		end if;

		-- We may have to delete other items here, e.g., symlinks (future feature)

	end loop;

	-- We need to return something for the trigger to be activated
	return old;

end;$$ language plpgsql;