-- Deploy numerus:remove_expense to pg
-- requires: roles
-- requires: schema_numerus
-- requires: expense_tax
-- requires: expense_attachment
-- requires: expense

begin;

set search_path to numerus, public;

create or replace function remove_expense(expense_slug uuid) returns void as
$$
declare
	eid integer;
begin
	select expense_id into eid from expense where slug = expense_slug;
	if not found then
		return;
	end if;

	delete from expense_tax where expense_id = eid;
	delete from expense_attachment where expense_id = eid;
	delete from expense where expense_id = eid;
end
$$
	language plpgsql
;

revoke execute on function remove_expense(uuid) from public;
grant execute on function remove_expense(uuid) to invoicer;
grant execute on function remove_expense(uuid) to admin;

commit;
