-- Hardware-ID für UserDevices
-- Client liefert hardwaregebundene ID; Backend speichert sie separat zur bestehenden deviceId.

-- Die canonical CREATE TABLE für user_devices lebt in einer späteren Migration.
-- Wir erstellen die Tabelle hier idempotent voraus, damit frische Datenbanken
-- trotz falscher alphabetischer Reihenfolge sauber migrieren.
CREATE TABLE IF NOT EXISTS "rebreak"."user_devices" (
    "id"           UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    "user_id"      UUID NOT NULL,
    "device_id"    TEXT NOT NULL,
    "platform"     TEXT NOT NULL,
    "model"        TEXT,
    "name"         TEXT,
    "last_seen_at" TIMESTAMP(3) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "created_at"   TIMESTAMP(3) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE UNIQUE INDEX IF NOT EXISTS "user_devices_user_id_device_id_key"
    ON "rebreak"."user_devices"("user_id", "device_id");

CREATE INDEX IF NOT EXISTS "user_devices_user_id_idx"
    ON "rebreak"."user_devices"("user_id");

ALTER TABLE "rebreak"."user_devices"
    ADD COLUMN IF NOT EXISTS "hardware_id" TEXT;

-- Eindeutigkeit pro User + Hardware-ID (NULL-Werte sind bei UNIQUE erlaubt)
CREATE UNIQUE INDEX IF NOT EXISTS "user_devices_user_id_hardware_id_key"
    ON "rebreak"."user_devices"("user_id", "hardware_id");

CREATE INDEX IF NOT EXISTS "user_devices_hardware_id_idx"
    ON "rebreak"."user_devices"("hardware_id");
