chore(db): migrate from SQLite to PostgreSQL
- Change Prisma provider from sqlite to postgresql - Replace better-sqlite3 adapter with @prisma/adapter-pg - Update prisma.config.ts and lib/prisma.ts for PostgreSQL - Add DATABASE_URL to .env.local - Regenerate Prisma client for PostgreSQL - Recreate migrations for PostgreSQL database
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Game" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"mode" TEXT NOT NULL,
|
||||
"startArticle" TEXT NOT NULL,
|
||||
"targetArticle" TEXT NOT NULL,
|
||||
"path" TEXT NOT NULL,
|
||||
"clicks" INTEGER NOT NULL,
|
||||
"timeSeconds" REAL NOT NULL,
|
||||
"won" BOOLEAN NOT NULL DEFAULT true,
|
||||
"playedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "Game_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- 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 "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Game_userId_idx" ON "Game"("userId");
|
||||
|
||||
-- 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");
|
||||
@@ -1,17 +0,0 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_User" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"banned" BOOLEAN NOT NULL DEFAULT false,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
INSERT INTO "new_User" ("createdAt", "email", "id", "name", "password") SELECT "createdAt", "email", "id", "name", "password" FROM "User";
|
||||
DROP TABLE "User";
|
||||
ALTER TABLE "new_User" RENAME TO "User";
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
@@ -0,0 +1,75 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"banned" BOOLEAN NOT NULL DEFAULT false,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Game" (
|
||||
"id" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"mode" TEXT NOT NULL,
|
||||
"startArticle" TEXT NOT NULL,
|
||||
"targetArticle" TEXT NOT NULL,
|
||||
"path" TEXT NOT NULL,
|
||||
"clicks" INTEGER NOT NULL,
|
||||
"timeSeconds" DOUBLE PRECISION NOT NULL,
|
||||
"won" BOOLEAN NOT NULL DEFAULT true,
|
||||
"playedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Game_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "DailyPuzzle" (
|
||||
"id" TEXT NOT NULL,
|
||||
"date" TEXT NOT NULL,
|
||||
"startArticle" TEXT NOT NULL,
|
||||
"targetArticle" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "DailyPuzzle_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "DailyResult" (
|
||||
"id" TEXT NOT NULL,
|
||||
"puzzleId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"path" TEXT NOT NULL,
|
||||
"clicks" INTEGER NOT NULL,
|
||||
"timeSeconds" DOUBLE PRECISION NOT NULL,
|
||||
"won" BOOLEAN NOT NULL,
|
||||
"playedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "DailyResult_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Game_userId_idx" ON "Game"("userId");
|
||||
|
||||
-- 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");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Game" ADD CONSTRAINT "Game_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "DailyResult" ADD CONSTRAINT "DailyResult_puzzleId_fkey" FOREIGN KEY ("puzzleId") REFERENCES "DailyPuzzle"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "DailyResult" ADD CONSTRAINT "DailyResult_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -1,3 +1,3 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "sqlite"
|
||||
provider = "postgresql"
|
||||
|
||||
@@ -4,7 +4,7 @@ generator client {
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "sqlite"
|
||||
provider = "postgresql"
|
||||
}
|
||||
|
||||
model User {
|
||||
|
||||
Reference in New Issue
Block a user