64 lines
1.8 KiB
SQL
64 lines
1.8 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"email" TEXT NOT NULL,
|
|
"password" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL,
|
|
"role" TEXT NOT NULL DEFAULT 'USER',
|
|
"score" INTEGER NOT NULL DEFAULT 0,
|
|
"level" INTEGER NOT NULL DEFAULT 1,
|
|
"hp" INTEGER NOT NULL DEFAULT 1000,
|
|
"maxHp" INTEGER NOT NULL DEFAULT 1000,
|
|
"xp" INTEGER NOT NULL DEFAULT 0,
|
|
"maxXp" INTEGER NOT NULL DEFAULT 5000,
|
|
"avatar" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserPreferences" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"homeBackground" TEXT,
|
|
"eventsBackground" TEXT,
|
|
"leaderboardBackground" TEXT,
|
|
"theme" TEXT DEFAULT 'default',
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "UserPreferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Event" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"date" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_score_idx" ON "User"("score");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_email_idx" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserPreferences_userId_key" ON "UserPreferences"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Event_status_idx" ON "Event"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Event_date_idx" ON "Event"("date");
|