-- Deploy camper:campsite_type_option_cost to pg -- requires: roles -- requires: schema_camper -- requires: campsite_type -- requires: season -- requires: campsite_type_option -- requires: user_profile begin; set search_path to camper, public; create table campsite_type_option_cost ( campsite_type_option_id integer not null references campsite_type_option, season_id integer not null references season, cost_per_night integer not null constraint cost_not_negative check(cost_per_night >= 0), primary key (campsite_type_option_id, season_id) ); grant select on table campsite_type_option_cost to guest; grant select on table campsite_type_option_cost to employee; grant select, insert, update, delete on table campsite_type_option_cost to admin; alter table campsite_type_option_cost enable row level security; create policy guest_ok on campsite_type_option_cost for select using (true) ; create policy insert_to_company on campsite_type_option_cost for insert with check ( exists (select 1 from campsite_type_option join campsite_type using (campsite_type_id) join season using (company_id) join user_profile using (company_id) where campsite_type_option.campsite_type_option_id = campsite_type_option_cost.campsite_type_option_id and season.season_id = campsite_type_option_cost.season_id) ) ; create policy update_company on campsite_type_option_cost for update using ( exists (select 1 from campsite_type_option join campsite_type using (campsite_type_id) join season using (company_id) join user_profile using (company_id) where campsite_type_option.campsite_type_option_id = campsite_type_option_cost.campsite_type_option_id and season.season_id = campsite_type_option_cost.season_id) ) ; create policy delete_from_company on campsite_type_option_cost for delete using ( exists (select 1 from campsite_type_option join campsite_type using (campsite_type_id) join season using (company_id) join user_profile using (company_id) where campsite_type_option.campsite_type_option_id = campsite_type_option_cost.campsite_type_option_id and season.season_id = campsite_type_option_cost.season_id) ) ; commit;