-- Deploy numerus:edit_contact to pg -- requires: schema_numerus -- requires: email -- requires: extension_uri -- requires: country_code -- requires: tag_name -- requires: contact -- requires: extension_vat -- requires: extension_pg_libphonenumber begin; set search_path to numerus, public; create or replace function edit_contact(contact_slug uuid, business_name text, vatin text, trade_name text, phone text, email email, web uri, address text, city text, province text, postal_code text, country_code country_code, tags tag_name[]) returns uuid as $$ declare cid integer; company integer; begin update contact set business_name = edit_contact.business_name , vatin = (edit_contact.country_code || edit_contact.vatin)::vatin , trade_name = edit_contact.trade_name , phone = parse_packed_phone_number( edit_contact.phone, edit_contact.country_code) , email = edit_contact.email , web = edit_contact.web , address = edit_contact.address , city = edit_contact.city , province = edit_contact.province , postal_code = edit_contact.postal_code , country_code = edit_contact.country_code , tags = edit_contact.tags where slug = contact_slug returning contact_id, company_id into cid, company ; if cid is null then return null; end if; return contact_slug; end $$ language plpgsql ; revoke execute on function edit_contact(uuid, text, text, text, text, email, uri, text, text, text, text, country_code, tag_name[]) from public; grant execute on function edit_contact(uuid, text, text, text, text, email, uri, text, text, text, text, country_code, tag_name[]) to invoicer; grant execute on function edit_contact(uuid, text, text, text, text, email, uri, text, text, text, text, country_code, tag_name[]) to admin; drop function if exists edit_contact(uuid, text, text, text, text, tax_details, text, text, tag_name[]); commit;