-- Deploy numerus:attach_to_payment to pg -- requires: roles -- requires: schema_numerus -- requires: payment -- requires: payment_attachment begin; set search_path to numerus, public; create or replace function attach_to_payment(payment_slug uuid, original_filename text, mime_type text, content bytea) returns void as $$ insert into payment_attachment (payment_id, original_filename, mime_type, content) select payment_id, original_filename, mime_type, content from payment where slug = payment_slug on conflict (payment_id) do update set original_filename = excluded.original_filename , mime_type = excluded.mime_type , content = excluded.content ; $$ language sql ; revoke execute on function attach_to_payment(uuid, text, text, bytea) from public; grant execute on function attach_to_payment(uuid, text, text, bytea) to invoicer; grant execute on function attach_to_payment(uuid, text, text, bytea) to admin; commit;