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
56 lines
1.6 KiB
PL/PgSQL
56 lines
1.6 KiB
PL/PgSQL
-- Deploy camper:campsite_type_option to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: campsite_type
|
|
-- requires: user_profile
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create table campsite_type_option (
|
|
campsite_type_option_id integer generated by default as identity primary key,
|
|
campsite_type_id integer not null references campsite_type,
|
|
name text not null constraint name_not_empty check(length(trim(name)) > 0),
|
|
range int4range not null constraint range_not_negative check(lower(range) >= 0),
|
|
position integer not null default 2147483647
|
|
);
|
|
|
|
alter table campsite_type_option enable row level security;
|
|
|
|
grant select on table campsite_type_option to guest;
|
|
grant select on table campsite_type_option to employee;
|
|
grant select, insert, update, delete on table campsite_type_option to admin;
|
|
|
|
create policy guest_ok
|
|
on campsite_type_option
|
|
for select
|
|
using (true)
|
|
;
|
|
|
|
create policy insert_to_company
|
|
on campsite_type_option
|
|
for insert
|
|
with check (
|
|
exists (select 1 from campsite_type join user_profile using (company_id) where campsite_type.campsite_type_id = campsite_type_option.campsite_type_id)
|
|
)
|
|
;
|
|
|
|
create policy update_company
|
|
on campsite_type_option
|
|
for update
|
|
using (
|
|
exists (select 1 from campsite_type join user_profile using (company_id) where campsite_type.campsite_type_id = campsite_type_option.campsite_type_id)
|
|
)
|
|
;
|
|
|
|
create policy delete_from_company
|
|
on campsite_type_option
|
|
for delete
|
|
using (
|
|
exists (select 1 from campsite_type join user_profile using (company_id) where campsite_type.campsite_type_id = campsite_type_option.campsite_type_id)
|
|
)
|
|
;
|
|
|
|
commit;
|