-- Deploy numerus:invoice to pg -- requires: schema_numerus -- requires: company -- requires: contact -- requires: invoice_status -- requires: currency -- requires: tag_name begin; set search_path to numerus, public; create table invoice ( invoice_id serial primary key, company_id integer not null references company, slug uuid not null unique default gen_random_uuid(), invoice_number text not null constraint invoice_number_not_empty check(length(trim(invoice_number)) > 1), invoice_date date not null default current_date, contact_id integer not null references contact, invoice_status text not null default 'created' references invoice_status, notes text not null default '', tags tag_name[] not null default '{}', payment_method_id integer not null references payment_method, currency_code text not null references currency, created_at timestamptz not null default current_timestamp ); create index on invoice using gin (tags); grant select, insert, update, delete on table invoice to invoicer; grant select, insert, update, delete on table invoice to admin; grant usage on sequence invoice_invoice_id_seq to invoicer; grant usage on sequence invoice_invoice_id_seq to admin; alter table invoice enable row level security; create policy company_policy on invoice using ( exists( select 1 from company_user join user_profile using (user_id) where company_user.company_id = invoice.company_id ) ); commit;