-- Deploy camper:invoice to pg -- requires: roles -- requires: schema_camper -- requires: user_profile -- requires: company -- requires: contact -- requires: invoice_status -- requires: currency begin; set search_path to camper, public; create table invoice ( invoice_id integer generated by default as identity 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 '', payment_method_id integer not null references payment_method, currency_code text not null references currency, created_at timestamptz not null default current_timestamp ); grant select, insert, update, delete on table invoice to employee; grant select, insert, update, delete on table invoice 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;