-- Gruppen/Abteilungen mit Rollenzuweisung auf Gruppenebene (RBAC-03, siehe
-- core-kanban/tickets/RBAC-03.md). Lebt in der Tenant-Datenbank (Modell C) —
-- Gruppen sind implizit tenant-isoliert, da jede Tenant-DB ihre eigenen hat.
CREATE TABLE groups (
    id         UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name       TEXT NOT NULL,
    role       TEXT CHECK (role IN ('user', 'tenant_admin')),
    created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- ON DELETE CASCADE: Loeschen einer Gruppe entzieht die gruppenbasierten
-- Rechte automatisch, ohne Benutzerkonten selbst zu beruehren
-- (Akzeptanzkriterium 3).
CREATE TABLE group_members (
    group_id UUID NOT NULL REFERENCES groups(id) ON DELETE CASCADE,
    user_id  UUID NOT NULL REFERENCES users(id),
    added_at TIMESTAMPTZ NOT NULL DEFAULT now(),
    PRIMARY KEY (group_id, user_id)
);

CREATE INDEX group_members_user_idx ON group_members (user_id);
