-- -- file_storage__delete_version/2 -- create or replace function file_storage__delete_version( integer, integer ) returns int4 as $$ -- cr_items.parent_id%TYPE declare delete_version__file_id alias for $1; delete_version__version_id alias for $2; v_parent_id cr_items.parent_id%TYPE; v_deleted_last_version_p boolean; begin if delete_version__version_id = content_item__get_live_revision(delete_version__file_id) then PERFORM content_revision__delete(delete_version__version_id); PERFORM content_item__set_live_revision( content_item__get_latest_revision(delete_version__file_id) ); else PERFORM content_revision__delete(delete_version__version_id); end if; -- If the live revision is null, we have deleted the last version above select (case when live_revision is null then parent_id else 0 end) into v_parent_id from cr_items where item_id = delete_version__file_id; -- Unfortunately, due to PostgreSQL behavior with regards referential integrity, -- we cannot delete the content_item entry if there are no more revisions. return v_parent_id; end;$$ language plpgsql;