campingmontagut/deploy/amenity_carousel.sql
jordi fita mas eeaa3b415e Add amenities section and public page
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.
2024-01-27 22:51:41 +01:00

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;