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
58 lines
1.2 KiB
PL/PgSQL
58 lines
1.2 KiB
PL/PgSQL
-- Deploy camper:season to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: company
|
|
-- requires: user_profile
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create table season (
|
|
season_id integer generated by default as identity primary key,
|
|
company_id integer not null references company,
|
|
slug uuid not null unique default gen_random_uuid(),
|
|
name text not null constraint name_not_empty check(length(trim(name)) > 0),
|
|
color integer not null default 0,
|
|
active boolean not null default true,
|
|
position integer not null default 2147483647
|
|
);
|
|
|
|
grant select on table season to guest;
|
|
grant select on table season to employee;
|
|
grant select, insert, delete, update on table season to admin;
|
|
|
|
alter table season enable row level security;
|
|
|
|
create policy guest_ok
|
|
on season
|
|
for select
|
|
using (true)
|
|
;
|
|
|
|
create policy insert_to_company
|
|
on season
|
|
for insert
|
|
with check (
|
|
company_id in (select company_id from user_profile)
|
|
)
|
|
;
|
|
|
|
create policy update_company
|
|
on season
|
|
for update
|
|
using (
|
|
company_id in (select company_id from user_profile)
|
|
)
|
|
;
|
|
|
|
create policy delete_from_company
|
|
on season
|
|
for delete
|
|
using (
|
|
company_id in (select company_id from user_profile)
|
|
)
|
|
;
|
|
|
|
commit;
|