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
28 lines
873 B
PL/PgSQL
28 lines
873 B
PL/PgSQL
-- Deploy camper:order_campsite_type_carousel to pg
|
|
-- requires: schema_camper
|
|
-- requires: roles
|
|
-- requires: campsite_type
|
|
-- requires: campsite_type_carousel
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create or replace function order_campsite_type_carousel(slug uuid, positions integer[]) returns void as
|
|
$$
|
|
update campsite_type_carousel
|
|
set position = cast(temp.position as integer)
|
|
from unnest(positions) with ordinality as temp(media_id, position)
|
|
join campsite_type on campsite_type.slug = order_campsite_type_carousel.slug
|
|
where campsite_type_carousel.campsite_type_id = campsite_type.campsite_type_id
|
|
and campsite_type_carousel.media_id = temp.media_id
|
|
;
|
|
$$
|
|
language sql
|
|
;
|
|
|
|
revoke execute on function order_campsite_type_carousel(uuid, integer[]) from public;
|
|
grant execute on function order_campsite_type_carousel(uuid, integer[]) to admin;
|
|
|
|
commit;
|