diff --git a/packages/prisma/migrations/20231123132053_public_api_api_token/migration.sql b/packages/prisma/migrations/20231123132053_public_api_api_token/migration.sql new file mode 100644 index 000000000..d3c9106c4 --- /dev/null +++ b/packages/prisma/migrations/20231123132053_public_api_api_token/migration.sql @@ -0,0 +1,21 @@ +-- CreateEnum +CREATE TYPE "ApiTokenAlgorithm" AS ENUM ('SHA512'); + +-- CreateTable +CREATE TABLE "ApiToken" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "token" TEXT NOT NULL, + "algorithm" "ApiTokenAlgorithm" NOT NULL DEFAULT 'SHA512', + "expires" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "userId" INTEGER NOT NULL, + + CONSTRAINT "ApiToken_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "ApiToken_token_key" ON "ApiToken"("token"); + +-- AddForeignKey +ALTER TABLE "ApiToken" ADD CONSTRAINT "ApiToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 02807e4a0..8e073829b 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -37,7 +37,8 @@ model User { Subscription Subscription? PasswordResetToken PasswordResetToken[] VerificationToken VerificationToken[] - + ApiToken ApiToken[] + @@index([email]) } @@ -60,6 +61,21 @@ model VerificationToken { user User @relation(fields: [userId], references: [id]) } +enum ApiTokenAlgorithm { + SHA512 +} + +model ApiToken { + id Int @id @default(autoincrement()) + name String + token String @unique + algorithm ApiTokenAlgorithm @default(SHA512) + expires DateTime + createdAt DateTime @default(now()) + userId Int + user User @relation(fields: [userId], references: [id]) +} + enum SubscriptionStatus { ACTIVE PAST_DUE