-- One ingest token per device, not per account.
--
-- The existing account token is carried into the new table FIRST, so whatever
-- is already pasted into the iOS Shortcut keeps working. Only then is the old
-- column dropped.
CREATE TABLE "CaptureToken" (
    "id" TEXT NOT NULL,
    "ownerId" TEXT NOT NULL,
    "tokenHash" TEXT NOT NULL,
    "label" TEXT NOT NULL,
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "lastUsedAt" TIMESTAMP(3),
    CONSTRAINT "CaptureToken_pkey" PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "CaptureToken_tokenHash_key" ON "CaptureToken"("tokenHash");
CREATE INDEX "CaptureToken_ownerId_idx" ON "CaptureToken"("ownerId");
ALTER TABLE "CaptureToken" ADD CONSTRAINT "CaptureToken_ownerId_fkey"
  FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;

INSERT INTO "CaptureToken" ("id", "ownerId", "tokenHash", "label", "createdAt")
SELECT gen_random_uuid(), "id", "captureTokenHash", 'Existing device (pre-split)', now()
FROM "User" WHERE "captureTokenHash" IS NOT NULL;

DROP INDEX IF EXISTS "User_captureTokenHash_key";
ALTER TABLE "User" DROP COLUMN "captureTokenHash";
