QR-Typen je Gruppe freigeben
Bisher galt die Freigabe eines Typs fuer die ganze Installation. Bei mehreren Gruppen ist das zu grob: Die Marketingabteilung braucht Social Media, die Werkstatt nur Website und PDF. Die Freigabe bekommt eine zweite Ebene. Die Grundeinstellung bleibt die Grundlage; je Gruppe laesst sich davon abweichen. Fehlt eine Abweichung, folgt die Gruppe der Grundeinstellung. Zur offenen Frage im Issue: Die globale Abschaltung gewinnt immer. Ein global abgeschalteter Typ laesst sich in keiner Gruppe einschalten — der Schalter steht dort sichtbar still und nennt den Grund. Andersherum waere "hier abgeschaltet" keine verlaessliche Aussage mehr. Eine eigene Tabelle statt eines zusammengesetzten Schluessels in QrTypeSetting: Der globale Fall braeuchte dort eine leere Gruppe, und PostgreSQL laesst in einem eindeutigen Index beliebig viele NULL nebeneinander zu — die Eindeutigkeit der globalen Zeile waere also gerade nicht gesichert. Die Startseite zeigt die Vereinigung ueber die eigenen Gruppen; beim Anlegen entscheidet die gewaehlte Gruppe, und die Route prueft das noch einmal. Refs #11
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
-- QR-Typen lassen sich je Gruppe abschalten.
|
||||
--
|
||||
-- Die globale Freigabe in "QrTypeSetting" bleibt die Grundlage. Diese Tabelle
|
||||
-- traegt nur Abweichungen davon: Fehlt eine Zeile, folgt die Gruppe der
|
||||
-- globalen Einstellung. Eine globale Abschaltung laesst sich hierueber nicht
|
||||
-- aufheben — global aus gewinnt immer.
|
||||
--
|
||||
-- Eigene Tabelle statt eines zusammengesetzten Schluessels in
|
||||
-- "QrTypeSetting": Der globale Fall braeuchte dort eine leere Gruppe, und
|
||||
-- PostgreSQL laesst in einem eindeutigen Index beliebig viele NULL
|
||||
-- nebeneinander zu.
|
||||
CREATE TABLE "QrTypeGroupSetting" (
|
||||
"type" TEXT NOT NULL,
|
||||
"groupId" TEXT NOT NULL,
|
||||
"enabled" BOOLEAN NOT NULL,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "QrTypeGroupSetting_pkey" PRIMARY KEY ("type","groupId")
|
||||
);
|
||||
|
||||
CREATE INDEX "QrTypeGroupSetting_groupId_idx" ON "QrTypeGroupSetting"("groupId");
|
||||
|
||||
-- Mit der Gruppe verschwindet auch ihre Abweichung.
|
||||
ALTER TABLE "QrTypeGroupSetting" ADD CONSTRAINT "QrTypeGroupSetting_groupId_fkey"
|
||||
FOREIGN KEY ("groupId") REFERENCES "Group"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user