create table "medreport"."company_params" ( "id" uuid not null default gen_random_uuid(), "benefit_occurance" text, "benefit_amount" numeric, "account_id" uuid, "created_at" timestamp with time zone default now(), "updated_at" timestamp with time zone default now(), "slug" text ); alter table "medreport"."company_params" enable row level security; CREATE UNIQUE INDEX company_params_pkey ON medreport.company_params USING btree (id); alter table "medreport"."company_params" add constraint "company_params_pkey" PRIMARY KEY using index "company_params_pkey"; alter table "medreport"."company_params" add constraint "company_params_account_id_fkey" FOREIGN KEY (account_id) REFERENCES medreport.accounts(id) ON DELETE CASCADE not valid; alter table "medreport"."company_params" validate constraint "company_params_account_id_fkey"; set check_function_bodies = off; CREATE OR REPLACE FUNCTION medreport.insert_company_params_on_new_company() RETURNS trigger LANGUAGE plpgsql AS $function$begin insert into medreport.company_params ( account_id, slug, benefit_occurance, benefit_amount ) values ( new.id, new.slug, null, -- or a default value like 'monthly' null -- or a default numeric like 0 ); return new; end;$function$ ; grant execute on function medreport.insert_company_params_on_new_company() to authenticated, service_role; CREATE TRIGGER trigger_create_company_params AFTER INSERT ON medreport.accounts FOR EACH ROW EXECUTE FUNCTION medreport.insert_company_params_on_new_company(); create policy "Allow select and update if user is account's primary owner" on medreport.company_params for all using ( exists ( select 1 from medreport.accounts where accounts.id = company_params.account_id and accounts.primary_owner_user_id = auth.uid() ) ) with check ( exists ( select 1 from medreport.accounts where accounts.id = company_params.account_id and accounts.primary_owner_user_id = auth.uid() ) ); grant select, update on medreport.company_params to authenticated;