Skip to content
This repository has been archived by the owner on Oct 12, 2024. It is now read-only.

Commit

Permalink
UserVerification: Initial code
Browse files Browse the repository at this point in the history
  • Loading branch information
MaidenlessUsr committed Sep 2, 2024
1 parent 9187a14 commit 2fb4043
Show file tree
Hide file tree
Showing 9 changed files with 1,009 additions and 13 deletions.
52 changes: 52 additions & 0 deletions prisma/migrations/20240902170604_userverification/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-- CreateEnum
CREATE TYPE "VerificationStatus" AS ENUM ('Waiting', 'Approved', 'Rejected', 'Revoked');

-- AlterTable
ALTER TABLE "Guild" ADD COLUMN "VerifyAttachEnabled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "VerifyDetailEnabled" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "VerifyTempPaused" BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN "VerifyUnverifiedRoleId" TEXT NOT NULL DEFAULT '',
ADD COLUMN "VerifyVerifiedRoleId" TEXT NOT NULL DEFAULT '';

-- CreateTable
CREATE TABLE "UserVerificationData" (
"GuildId" TEXT NOT NULL,
"UserId" TEXT NOT NULL,
"Banned" BOOLEAN NOT NULL DEFAULT false
);

-- CreateTable
CREATE TABLE "UserVerificationHistory" (
"VerificationHistoryId" SERIAL NOT NULL,
"GuildId" TEXT NOT NULL,
"UserId" TEXT NOT NULL,
"Status" "VerificationStatus" NOT NULL DEFAULT 'Waiting',
"CheckerUserId" TEXT NOT NULL DEFAULT '',
"CheckerNote" TEXT NOT NULL DEFAULT '',
"Detail" TEXT NOT NULL DEFAULT '',
"Attachment" TEXT NOT NULL DEFAULT '',
"RejectReason" TEXT NOT NULL DEFAULT '',
"CreatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"UpdatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,

CONSTRAINT "UserVerificationHistory_pkey" PRIMARY KEY ("VerificationHistoryId")
);

-- CreateTable
CREATE TABLE "UserVerificationAttachment" (
"GuildId" TEXT NOT NULL,
"UserId" TEXT NOT NULL,
"Attachment" TEXT NOT NULL
);

-- CreateIndex
CREATE UNIQUE INDEX "UserVerificationData_GuildId_UserId_key" ON "UserVerificationData"("GuildId", "UserId");

-- CreateIndex
CREATE UNIQUE INDEX "UserVerificationAttachment_GuildId_UserId_key" ON "UserVerificationAttachment"("GuildId", "UserId");

-- AddForeignKey
ALTER TABLE "UserVerificationData" ADD CONSTRAINT "UserVerificationData_GuildId_fkey" FOREIGN KEY ("GuildId") REFERENCES "Guild"("GuildId") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "UserVerificationHistory" ADD CONSTRAINT "UserVerificationHistory_GuildId_UserId_fkey" FOREIGN KEY ("GuildId", "UserId") REFERENCES "UserVerificationData"("GuildId", "UserId") ON DELETE CASCADE ON UPDATE CASCADE;
64 changes: 55 additions & 9 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,29 @@ enum GuildFeatures {
RobloxAPI
}

enum VerificationStatus {
Waiting
Approved
Rejected
Revoked
}

model Guild {
GuildId String @unique
EnforceSayInExecutor Boolean @default(false)
JoinLeaveLogChannelId String @default("")
PublicModLogChannelId String @default("")
LoggingChannelId String @default("")
BanAppealLink String @default("")
EnabledGuildFeatures GuildFeatures[]
ModerationCase ModerationCase[]
Tag Tag[]
GuildId String @unique
EnforceSayInExecutor Boolean @default(false)
JoinLeaveLogChannelId String @default("")
PublicModLogChannelId String @default("")
LoggingChannelId String @default("")
BanAppealLink String @default("")
VerifyDetailEnabled Boolean @default(false)
VerifyAttachEnabled Boolean @default(false)
VerifyTempPaused Boolean @default(false)
VerifyVerifiedRoleId String @default("")
VerifyUnverifiedRoleId String @default("")
EnabledGuildFeatures GuildFeatures[]
ModerationCase ModerationCase[]
Tag Tag[]
UserVerificationData UserVerificationData[]
}

model ModerationCase {
Expand Down Expand Up @@ -95,3 +108,36 @@ model Tag {
Content String
Attachment String @default("")
}

model UserVerificationData {
Guild Guild @relation(fields: [GuildId], references: [GuildId], onDelete: Cascade)
GuildId String
UserId String
Banned Boolean @default(false)
History UserVerificationHistory[]
@@unique(name: "UniqueUserPerGuild", fields: [GuildId, UserId])
}

model UserVerificationHistory {
VerificationHistoryId Int @id @default(autoincrement())
MainData UserVerificationData @relation(fields: [GuildId, UserId], references: [GuildId, UserId], onDelete: Cascade)
GuildId String
UserId String
Status VerificationStatus @default(Waiting)
CheckerUserId String @default("")
CheckerNote String @default("")
Detail String @default("")
Attachment String @default("")
RejectReason String @default("")
CreatedAt DateTime @default(now())
UpdatedAt DateTime @default(now())
}

model UserVerificationAttachment {
GuildId String
UserId String
Attachment String
@@unique(name: "UniqueAttachmentPerUserPerGuild", fields: [GuildId, UserId])
}
Loading

0 comments on commit 2fb4043

Please sign in to comment.