Bereiche vollständig verwaltbar (anlegen/bearbeiten/löschen/Uhrzeit)

Migration 0006: sections.key bekommt einen automatisch generierten
Schlüssel (wie dishes.id), menu_entries.section_key kaskadiert beim
Löschen eines Bereichs, neue RLS-Policy erlaubt Kantinenmitarbeitern/
Admins Schreibzugriff auf sections.

Neue Seite „Bereiche" im Kantinen-Bereich (SectionManager): Bereiche
anlegen, umbenennen (inkl. EN/PL), Uhrzeit setzen, löschen und per
Pfeil-Buttons neu anordnen.
This commit is contained in:
2026-07-18 08:14:32 +02:00
parent 8b98294998
commit 868a5d2fcf
5 changed files with 386 additions and 0 deletions
@@ -0,0 +1,25 @@
-- =============================================================
-- Bereiche (Brotzeit/Mittagessen/…) vollständig verwaltbar machen:
-- anlegen, umbenennen, Uhrzeit ändern, löschen.
-- =============================================================
-- Neue Bereiche bekommen einen automatisch generierten Schlüssel
-- (wie bei dishes.id) statt eines von Hand vergebenen Slugs.
alter table public.sections
alter column key set default (gen_random_uuid())::text;
-- Löscht man einen Bereich, werden seine Wochenplan-Einträge mit
-- entfernt (analog zu menu_entries_dish_id_fkey bei Gerichten) statt
-- die Löschung zu blockieren.
alter table public.menu_entries
drop constraint menu_entries_section_key_fkey;
alter table public.menu_entries
add constraint menu_entries_section_key_fkey
foreign key (section_key) references public.sections(key) on delete cascade;
-- Bisher gab es nur eine Lesepolicy für sections; jetzt dürfen
-- Kantinenmitarbeiter/Admins Bereiche auch anlegen/ändern/löschen.
create policy "sections_staff_write" on public.sections
for all to authenticated
using (public.app_role() in ('staff', 'admin'))
with check (public.app_role() in ('staff', 'admin'));