-- Device-Account-Binding: Bypass-Schutz für Pro/Legend-User.
--
-- Wenn ein Pro/Legend-User ein Gerät registriert, wird dieses Gerät an seinen
-- Account gebunden. Ein Ausloggen + Einloggen mit einem anderen Account auf
-- demselben Gerät wird mit 409 DEVICE_LOCKED blockiert.
--
-- Neue Felder auf user_devices:
--   bound_to_plan  — Plan des Users ZUM ZEITPUNKT der Bindung. Binding gilt
--                    nur wenn bound_to_plan IN ('pro','legend','standard','premium').
--                    Free-Devices binden NICHT. Der Lock bleibt bestehen
--                    auch wenn der Original-User danach auf Free downgradet
--                    (Lock aufheben = Bypass-Vektor öffnen).
--   release_requested_at — wann der Original-User "Gerät freigeben" angeklickt
--                    hat. release_requested_at + 24h = automatische Freigabe
--                    (24h Cooldown schützt gegen impulsive Freigabe im Drang-Window).
--   lock_notified_at — Rate-Limit: max. 1 Mail pro Device pro 6h wenn jemand
--                    auf einem gebundenen Gerät versucht sich einzuloggen.
--
-- DSGVO-Hinweis (Hans-Müller): wenn der Original-User sein Konto löscht
-- (Art. 17 Recht auf Löschung), werden alle seine user_devices-Rows kaskadiert
-- gelöscht → alle Device-Locks automatisch released. Dies ist korrekt, da die
-- Verarbeitungsgrundlage (Nutzervertrag) erlischt. Keine gesonderte Cascade-Logik
-- nötig — DB-ON DELETE CASCADE reicht.

ALTER TABLE "rebreak"."user_devices"
    ADD COLUMN IF NOT EXISTS "bound_to_plan"         TEXT        NULL,
    ADD COLUMN IF NOT EXISTS "release_requested_at"  TIMESTAMPTZ NULL,
    ADD COLUMN IF NOT EXISTS "lock_notified_at"       TIMESTAMPTZ NULL;

-- Index: schnelle Suche "ist deviceId schon an einen anderen User gebunden?"
CREATE INDEX IF NOT EXISTS "user_devices_device_id_idx"
    ON "rebreak"."user_devices" ("device_id");
