I use Sortable, exactly like HTMx’s sorting example does[0]. Had to export the slug or ID of some entries to be able to add it in the hidden input. For forms that use ID instead of slug, had to use an input name other than “id” because otherwise the swap would fail due to bug #1496[1]. It is apparently fixed in a recent version of HTMx, but i did not want to update for fear of behaviour changes. [0]: https://htmx.org/examples/sortable/ [1]: https://github.com/bigskysoftware/htmx/issues/1496
55 lines
1.2 KiB
PL/PgSQL
55 lines
1.2 KiB
PL/PgSQL
-- Deploy camper:home_carousel to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: company
|
|
-- requires: media
|
|
-- requires: user_profile
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create table home_carousel (
|
|
media_id integer not null references media primary key,
|
|
caption text not null,
|
|
position integer not null default 2147483647
|
|
);
|
|
|
|
grant select on table home_carousel to guest;
|
|
grant select on table home_carousel to employee;
|
|
grant select, insert, update, delete on table home_carousel to admin;
|
|
|
|
alter table home_carousel enable row level security;
|
|
|
|
create policy guest_ok
|
|
on home_carousel
|
|
for select
|
|
using (true)
|
|
;
|
|
|
|
create policy insert_to_company
|
|
on home_carousel
|
|
for insert
|
|
with check (
|
|
exists (select 1 from media join user_profile using (company_id) where media.media_id = home_carousel.media_id)
|
|
)
|
|
;
|
|
|
|
create policy update_company
|
|
on home_carousel
|
|
for update
|
|
using (
|
|
exists (select 1 from media join user_profile using (company_id) where media.media_id = home_carousel.media_id)
|
|
)
|
|
;
|
|
|
|
create policy delete_from_company
|
|
on home_carousel
|
|
for delete
|
|
using (
|
|
exists (select 1 from media join user_profile using (company_id) where media.media_id = home_carousel.media_id)
|
|
)
|
|
;
|
|
|
|
commit;
|