-- Deploy numerus:attach_to_expense to pg -- requires: schema_numerus -- requires: expense -- requires: expense_attachment begin; set search_path to numerus, public; create or replace function attach_to_expense(expense_slug uuid, original_filename text, mime_type text, content bytea) returns void as $$ insert into expense_attachment (expense_id, original_filename, mime_type, content) select expense_id, original_filename, mime_type, content from expense where slug = expense_slug on conflict (expense_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_expense(uuid, text, text, bytea) from public; grant execute on function attach_to_expense(uuid, text, text, bytea) to invoicer; grant execute on function attach_to_expense(uuid, text, text, bytea) to admin; commit;