39 lines
1.6 KiB
MySQL
39 lines
1.6 KiB
MySQL
|
-- Deploy numerus:add_contact to pg
|
||
|
-- requires: schema_numerus
|
||
|
-- requires: extension_vat
|
||
|
-- requires: email
|
||
|
-- requires: extension_pg_libphonenumber
|
||
|
-- requires: extension_uri
|
||
|
-- requires: country_code
|
||
|
-- requires: contact
|
||
|
-- requires: tag_name
|
||
|
|
||
|
begin;
|
||
|
|
||
|
set search_path to numerus, public;
|
||
|
|
||
|
create or replace function add_contact(company_id integer, 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;
|
||
|
cslug uuid;
|
||
|
begin
|
||
|
insert into contact (company_id, business_name, vatin, trade_name, phone, email, web, address, city, province, postal_code, country_code)
|
||
|
values (add_contact.company_id, add_contact.business_name, (add_contact.country_code || add_contact.vatin)::vatin, add_contact.trade_name, parse_packed_phone_number(add_contact.phone, add_contact.country_code), add_contact.email, add_contact.web, add_contact.address, add_contact.city, add_contact.province, add_contact.postal_code, add_contact.country_code)
|
||
|
returning contact_id, slug
|
||
|
into cid, cslug;
|
||
|
|
||
|
perform tag_contact(company_id, cid, tags);
|
||
|
|
||
|
return cslug;
|
||
|
end
|
||
|
$$
|
||
|
language plpgsql
|
||
|
;
|
||
|
|
||
|
revoke execute on function add_contact(integer, text, text, text, text, email, uri, text, text, text, text, country_code, tag_name[]) from public;
|
||
|
grant execute on function add_contact(integer, text, text, text, text, email, uri, text, text, text, text, country_code, tag_name[]) to invoicer;
|
||
|
grant execute on function add_contact(integer, text, text, text, text, email, uri, text, text, text, text, country_code, tag_name[]) to admin;
|
||
|
|
||
|
commit;
|