This is more or less the same as the campsites, as public information goes, but for buildings and other amenities that the camping provides that are not campsites.
57 lines
1.5 KiB
PL/PgSQL
57 lines
1.5 KiB
PL/PgSQL
-- Deploy camper:amenity_carousel to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: amenity
|
|
-- requires: media
|
|
-- requires: user_profile
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create table amenity_carousel (
|
|
amenity_id integer not null references amenity,
|
|
media_id integer not null references media,
|
|
caption text not null,
|
|
position integer not null default 2147483647,
|
|
primary key (amenity_id, media_id)
|
|
);
|
|
|
|
grant select on table amenity_carousel to guest;
|
|
grant select on table amenity_carousel to employee;
|
|
grant select, insert, update, delete on table amenity_carousel to admin;
|
|
|
|
alter table amenity_carousel enable row level security;
|
|
|
|
create policy guest_ok
|
|
on amenity_carousel
|
|
for select
|
|
using (true)
|
|
;
|
|
|
|
create policy insert_to_company
|
|
on amenity_carousel
|
|
for insert
|
|
with check (
|
|
exists (select 1 from amenity join media using (company_id) join user_profile using (company_id) where amenity.amenity_id = amenity_carousel.amenity_id and media.media_id = amenity_carousel.media_id)
|
|
)
|
|
;
|
|
|
|
create policy update_company
|
|
on amenity_carousel
|
|
for update
|
|
using (
|
|
exists (select 1 from amenity join media using (company_id) join user_profile using (company_id) where amenity.amenity_id = amenity_carousel.amenity_id and media.media_id = amenity_carousel.media_id)
|
|
)
|
|
;
|
|
|
|
create policy delete_from_company
|
|
on amenity_carousel
|
|
for delete
|
|
using (
|
|
exists (select 1 from amenity join media using (company_id) join user_profile using (company_id) where amenity.amenity_id = amenity_carousel.amenity_id and media.media_id = amenity_carousel.media_id)
|
|
)
|
|
;
|
|
|
|
commit;
|