feat: add daily challenge and blitz mode (2min speedrun)
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "DailyPuzzle" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"date" TEXT NOT NULL,
|
||||
"startArticle" TEXT NOT NULL,
|
||||
"targetArticle" TEXT NOT NULL
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "DailyResult" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"puzzleId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"path" TEXT NOT NULL,
|
||||
"clicks" INTEGER NOT NULL,
|
||||
"timeSeconds" REAL NOT NULL,
|
||||
"won" BOOLEAN NOT NULL,
|
||||
"playedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "DailyResult_puzzleId_fkey" FOREIGN KEY ("puzzleId") REFERENCES "DailyPuzzle" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "DailyResult_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "DailyPuzzle_date_key" ON "DailyPuzzle"("date");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "DailyResult_puzzleId_idx" ON "DailyResult"("puzzleId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "DailyResult_puzzleId_userId_key" ON "DailyResult"("puzzleId", "userId");
|
||||
+27
-2
@@ -15,14 +15,15 @@ model User {
|
||||
email String @unique
|
||||
password String
|
||||
createdAt DateTime @default(now())
|
||||
games Game[]
|
||||
games Game[]
|
||||
dailyResults DailyResult[]
|
||||
}
|
||||
|
||||
model Game {
|
||||
id String @id @default(cuid())
|
||||
userId String
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
mode String // "solo" | "multi"
|
||||
mode String // "solo" | "multi" | "daily" | "blitz"
|
||||
startArticle String
|
||||
targetArticle String
|
||||
path String // JSON array de titres
|
||||
@@ -33,3 +34,27 @@ model Game {
|
||||
|
||||
@@index([userId])
|
||||
}
|
||||
|
||||
model DailyPuzzle {
|
||||
id String @id @default(cuid())
|
||||
date String @unique // "YYYY-MM-DD"
|
||||
startArticle String
|
||||
targetArticle String
|
||||
results DailyResult[]
|
||||
}
|
||||
|
||||
model DailyResult {
|
||||
id String @id @default(cuid())
|
||||
puzzleId String
|
||||
puzzle DailyPuzzle @relation(fields: [puzzleId], references: [id], onDelete: Cascade)
|
||||
userId String
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
path String // JSON
|
||||
clicks Int
|
||||
timeSeconds Float
|
||||
won Boolean
|
||||
playedAt DateTime @default(now())
|
||||
|
||||
@@unique([puzzleId, userId])
|
||||
@@index([puzzleId])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user