스키마 작업완료
This commit is contained in:
466
prisma/migrations/20251009021103_init_schema/migration.sql
Normal file
466
prisma/migrations/20251009021103_init_schema/migration.sql
Normal file
@@ -0,0 +1,466 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the `Message` table. If the table is not empty, all the data it contains will be lost.
|
||||
- You are about to drop the `User` table. If the table is not empty, all the data it contains will be lost.
|
||||
|
||||
*/
|
||||
-- DropTable
|
||||
PRAGMA foreign_keys=off;
|
||||
DROP TABLE "Message";
|
||||
PRAGMA foreign_keys=on;
|
||||
|
||||
-- DropTable
|
||||
PRAGMA foreign_keys=off;
|
||||
DROP TABLE "User";
|
||||
PRAGMA foreign_keys=on;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "boards" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
||||
"status" TEXT NOT NULL DEFAULT 'active',
|
||||
"type" TEXT NOT NULL DEFAULT 'general',
|
||||
"requiresApproval" BOOLEAN NOT NULL DEFAULT false,
|
||||
"allowAnonymousPost" BOOLEAN NOT NULL DEFAULT false,
|
||||
"allowSecretComment" BOOLEAN NOT NULL DEFAULT false,
|
||||
"isAdultOnly" BOOLEAN NOT NULL DEFAULT false,
|
||||
"requiredTags" JSONB,
|
||||
"requiredFields" JSONB,
|
||||
"readLevel" TEXT NOT NULL DEFAULT 'public',
|
||||
"writeLevel" TEXT NOT NULL DEFAULT 'member',
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "board_moderators" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"boardId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"role" TEXT NOT NULL DEFAULT 'MODERATOR',
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "board_moderators_boardId_fkey" FOREIGN KEY ("boardId") REFERENCES "boards" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "board_moderators_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "posts" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"boardId" TEXT NOT NULL,
|
||||
"authorId" TEXT,
|
||||
"title" TEXT NOT NULL,
|
||||
"content" TEXT NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT 'published',
|
||||
"isAnonymous" BOOLEAN NOT NULL DEFAULT false,
|
||||
"isPinned" BOOLEAN NOT NULL DEFAULT false,
|
||||
"pinnedOrder" INTEGER,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
"lastActivityAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "posts_boardId_fkey" FOREIGN KEY ("boardId") REFERENCES "boards" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "posts_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "users" (
|
||||
"userId" TEXT NOT NULL PRIMARY KEY,
|
||||
"nickname" TEXT NOT NULL,
|
||||
"passwordHash" TEXT,
|
||||
"name" TEXT NOT NULL,
|
||||
"birth" DATETIME NOT NULL,
|
||||
"phone" TEXT NOT NULL,
|
||||
"rank" INTEGER NOT NULL DEFAULT 0,
|
||||
"status" TEXT NOT NULL DEFAULT 'active',
|
||||
"authLevel" TEXT NOT NULL DEFAULT 'USER',
|
||||
"profileImage" TEXT,
|
||||
"lastLoginAt" DATETIME,
|
||||
"isAdultVerified" BOOLEAN NOT NULL DEFAULT false,
|
||||
"loginFailCount" INTEGER NOT NULL DEFAULT 0,
|
||||
"agreementTermsAt" DATETIME NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "roles" (
|
||||
"roleId" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "user_roles" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"roleId" TEXT NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "user_roles_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "user_roles_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "roles" ("roleId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "comments" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"postId" TEXT NOT NULL,
|
||||
"authorId" TEXT,
|
||||
"content" TEXT NOT NULL,
|
||||
"isAnonymous" BOOLEAN NOT NULL DEFAULT false,
|
||||
"isSecret" BOOLEAN NOT NULL DEFAULT false,
|
||||
"secretPasswordHash" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "comments_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "comments_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "tags" (
|
||||
"tagId" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"slug" TEXT NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "post_tags" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"postId" TEXT NOT NULL,
|
||||
"tagId" TEXT NOT NULL,
|
||||
CONSTRAINT "post_tags_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "post_tags_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "tags" ("tagId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "attachments" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"postId" TEXT NOT NULL,
|
||||
"url" TEXT NOT NULL,
|
||||
"type" TEXT NOT NULL DEFAULT 'image',
|
||||
"size" INTEGER,
|
||||
"width" INTEGER,
|
||||
"height" INTEGER,
|
||||
"sortOrder" INTEGER,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "attachments_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "reactions" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"postId" TEXT NOT NULL,
|
||||
"userId" TEXT,
|
||||
"clientHash" TEXT,
|
||||
"type" TEXT NOT NULL DEFAULT 'RECOMMEND',
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "reactions_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "reactions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "post_view_logs" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"postId" TEXT NOT NULL,
|
||||
"userId" TEXT,
|
||||
"ip" TEXT,
|
||||
"userAgent" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "post_view_logs_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "post_view_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "post_stats" (
|
||||
"postId" TEXT NOT NULL PRIMARY KEY,
|
||||
"views" INTEGER NOT NULL DEFAULT 0,
|
||||
"recommendCount" INTEGER NOT NULL DEFAULT 0,
|
||||
"reportCount" INTEGER NOT NULL DEFAULT 0,
|
||||
"commentsCount" INTEGER NOT NULL DEFAULT 0,
|
||||
CONSTRAINT "post_stats_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "reports" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"reporterId" TEXT,
|
||||
"targetType" TEXT NOT NULL,
|
||||
"postId" TEXT,
|
||||
"commentId" TEXT,
|
||||
"reason" TEXT NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT 'open',
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "reports_reporterId_fkey" FOREIGN KEY ("reporterId") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT "reports_postId_fkey" FOREIGN KEY ("postId") REFERENCES "posts" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "reports_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "comments" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "messages" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"senderId" TEXT NOT NULL,
|
||||
"receiverId" TEXT NOT NULL,
|
||||
"body" TEXT NOT NULL,
|
||||
"readAt" DATETIME,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "messages_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "messages_receiverId_fkey" FOREIGN KEY ("receiverId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "blocks" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"blockerId" TEXT NOT NULL,
|
||||
"blockedId" TEXT NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "blocks_blockerId_fkey" FOREIGN KEY ("blockerId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "blocks_blockedId_fkey" FOREIGN KEY ("blockedId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "point_transactions" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"amount" INTEGER NOT NULL,
|
||||
"reason" TEXT NOT NULL,
|
||||
"referenceType" TEXT,
|
||||
"referenceId" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "point_transactions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "level_thresholds" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"level" INTEGER NOT NULL,
|
||||
"minPoints" INTEGER NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "banned_keywords" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"pattern" TEXT NOT NULL,
|
||||
"appliesTo" TEXT NOT NULL,
|
||||
"severity" INTEGER NOT NULL DEFAULT 1,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "sanctions" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"type" TEXT NOT NULL,
|
||||
"reason" TEXT NOT NULL,
|
||||
"startAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"endAt" DATETIME,
|
||||
"createdBy" TEXT,
|
||||
CONSTRAINT "sanctions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "audit_logs" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"actorId" TEXT,
|
||||
"action" TEXT NOT NULL,
|
||||
"targetType" TEXT,
|
||||
"targetId" TEXT,
|
||||
"meta" JSONB,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "audit_logs_actorId_fkey" FOREIGN KEY ("actorId") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "admin_notifications" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"type" TEXT NOT NULL,
|
||||
"message" TEXT NOT NULL,
|
||||
"targetType" TEXT,
|
||||
"targetId" TEXT,
|
||||
"createdBy" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"readAt" DATETIME,
|
||||
CONSTRAINT "admin_notifications_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "login_sessions" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"device" TEXT,
|
||||
"ip" TEXT,
|
||||
"userAgent" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"lastSeenAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "login_sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "ip_blocks" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"ip" TEXT NOT NULL,
|
||||
"reason" TEXT,
|
||||
"active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdBy" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "ip_blocks_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users" ("userId") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "nickname_changes" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"oldNickname" TEXT NOT NULL,
|
||||
"newNickname" TEXT NOT NULL,
|
||||
"changedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "nickname_changes_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "password_reset_tokens" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"token" TEXT NOT NULL,
|
||||
"expiresAt" DATETIME NOT NULL,
|
||||
"usedAt" DATETIME,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "password_reset_tokens_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("userId") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "boards_slug_key" ON "boards"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "boards_status_sortOrder_idx" ON "boards"("status", "sortOrder");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "boards_type_requiresApproval_idx" ON "boards"("type", "requiresApproval");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "board_moderators_userId_idx" ON "board_moderators"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "board_moderators_boardId_userId_key" ON "board_moderators"("boardId", "userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "posts_boardId_status_createdAt_idx" ON "posts"("boardId", "status", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "posts_boardId_isPinned_pinnedOrder_idx" ON "posts"("boardId", "isPinned", "pinnedOrder");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_nickname_key" ON "users"("nickname");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_phone_key" ON "users"("phone");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "users_status_idx" ON "users"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "users_createdAt_idx" ON "users"("createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "roles_name_key" ON "roles"("name");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "user_roles_roleId_idx" ON "user_roles"("roleId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "user_roles_userId_roleId_key" ON "user_roles"("userId", "roleId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "comments_postId_createdAt_idx" ON "comments"("postId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "tags_name_key" ON "tags"("name");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "tags_slug_key" ON "tags"("slug");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "post_tags_tagId_idx" ON "post_tags"("tagId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "post_tags_postId_tagId_key" ON "post_tags"("postId", "tagId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "attachments_postId_idx" ON "attachments"("postId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "reactions_postId_type_idx" ON "reactions"("postId", "type");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "reactions_userId_idx" ON "reactions"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "reactions_clientHash_idx" ON "reactions"("clientHash");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "reactions_postId_type_userId_clientHash_key" ON "reactions"("postId", "type", "userId", "clientHash");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "post_view_logs_postId_createdAt_idx" ON "post_view_logs"("postId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "post_view_logs_userId_idx" ON "post_view_logs"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "reports_targetType_idx" ON "reports"("targetType");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "reports_postId_idx" ON "reports"("postId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "reports_commentId_idx" ON "reports"("commentId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "messages_senderId_createdAt_idx" ON "messages"("senderId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "messages_receiverId_createdAt_idx" ON "messages"("receiverId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "blocks_blockedId_idx" ON "blocks"("blockedId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "blocks_blockerId_blockedId_key" ON "blocks"("blockerId", "blockedId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "point_transactions_userId_createdAt_idx" ON "point_transactions"("userId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "level_thresholds_level_key" ON "level_thresholds"("level");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "banned_keywords_pattern_key" ON "banned_keywords"("pattern");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "banned_keywords_appliesTo_idx" ON "banned_keywords"("appliesTo");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "sanctions_userId_type_idx" ON "sanctions"("userId", "type");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "audit_logs_action_createdAt_idx" ON "audit_logs"("action", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "admin_notifications_type_createdAt_idx" ON "admin_notifications"("type", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "login_sessions_userId_lastSeenAt_idx" ON "login_sessions"("userId", "lastSeenAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "ip_blocks_ip_active_key" ON "ip_blocks"("ip", "active");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "nickname_changes_userId_changedAt_idx" ON "nickname_changes"("userId", "changedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "password_reset_tokens_token_key" ON "password_reset_tokens"("token");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "password_reset_tokens_userId_expiresAt_idx" ON "password_reset_tokens"("userId", "expiresAt");
|
||||
Reference in New Issue
Block a user