-- Deploy numerus:remove_collection to pg -- requires: roles -- requires: schema_numerus -- requires: invoice_payment -- requires: payment -- requires: payment_attachment -- requires: update_invoice_collection_status begin; set search_path to numerus, public; create or replace function remove_collection(collection_slug uuid) returns void as $$ declare cid integer; iid integer; begin select payment_id into cid from payment where slug = collection_slug; if not found then return; end if; delete from invoice_payment where payment_id = cid returning invoice_id into iid; if iid is not null then perform update_invoice_collection_status(null, iid, 0); end if; delete from payment_attachment where payment_id = cid; delete from payment where payment_id = cid; end $$ language plpgsql ; revoke execute on function remove_collection(uuid) from public; grant execute on function remove_collection(uuid) to invoicer; grant execute on function remove_collection(uuid) to admin; commit;