-- Peer invitations (issue #332): a user invites an e-mail address; the token -- allows exactly one registration even while registration is closed. -- CreateTable CREATE TABLE "invitations" ( "id" TEXT NOT NULL, "inviter_id" TEXT NOT NULL, "email" TEXT NOT NULL, "token_hash" TEXT NOT NULL, "expires_at" TIMESTAMP(3) NOT NULL, "revoked_at" TIMESTAMP(3), "accepted_at" TIMESTAMP(3), "accepted_user_id" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "invitations_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "invitations_token_hash_key" ON "invitations"("token_hash"); -- CreateIndex CREATE INDEX "invitations_inviter_id_idx" ON "invitations"("inviter_id"); -- AddForeignKey ALTER TABLE "invitations" ADD CONSTRAINT "invitations_inviter_id_fkey" FOREIGN KEY ("inviter_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;