37 lines
1.6 KiB
SQL
37 lines
1.6 KiB
SQL
CREATE TABLE "ExternalIdentity" (
|
|
"id" TEXT NOT NULL,
|
|
"provider" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"subject" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"displayName" TEXT,
|
|
"preferredUsername" TEXT,
|
|
"lastLoginAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
CONSTRAINT "ExternalIdentity_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "OidcLoginAttempt" (
|
|
"id" TEXT NOT NULL,
|
|
"stateHash" TEXT NOT NULL,
|
|
"provider" TEXT NOT NULL,
|
|
"purpose" TEXT NOT NULL,
|
|
"userId" TEXT,
|
|
"codeVerifier" TEXT NOT NULL,
|
|
"nonce" TEXT NOT NULL,
|
|
"returnTo" TEXT NOT NULL,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "OidcLoginAttempt_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE UNIQUE INDEX "ExternalIdentity_provider_tenantId_subject_key" ON "ExternalIdentity"("provider", "tenantId", "subject");
|
|
CREATE UNIQUE INDEX "ExternalIdentity_provider_userId_key" ON "ExternalIdentity"("provider", "userId");
|
|
CREATE INDEX "ExternalIdentity_userId_idx" ON "ExternalIdentity"("userId");
|
|
CREATE UNIQUE INDEX "OidcLoginAttempt_stateHash_key" ON "OidcLoginAttempt"("stateHash");
|
|
CREATE INDEX "OidcLoginAttempt_expiresAt_idx" ON "OidcLoginAttempt"("expiresAt");
|
|
CREATE INDEX "OidcLoginAttempt_userId_idx" ON "OidcLoginAttempt"("userId");
|
|
ALTER TABLE "ExternalIdentity" ADD CONSTRAINT "ExternalIdentity_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "OidcLoginAttempt" ADD CONSTRAINT "OidcLoginAttempt_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|