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.
26 lines
1.2 KiB
SQL
26 lines
1.2 KiB
SQL
-- =============================================================
|
|
-- 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'));
|