Implement PostgreSQL support and update database configuration: Migrate from SQLite to PostgreSQL by updating the Prisma schema, Docker configuration, and environment variables. Add PostgreSQL dependencies and adjust the database connection logic in the application. Enhance .gitignore to exclude PostgreSQL-related files and directories.
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
-- 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");
|
||||
@@ -0,0 +1,9 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "SitePreferences" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY DEFAULT 'global',
|
||||
"homeBackground" TEXT,
|
||||
"eventsBackground" TEXT,
|
||||
"leaderboardBackground" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
@@ -0,0 +1,18 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "EventRegistration" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"eventId" TEXT NOT NULL,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "EventRegistration_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "EventRegistration_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "EventRegistration_userId_idx" ON "EventRegistration"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "EventRegistration_eventId_idx" ON "EventRegistration"("eventId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "EventRegistration_userId_eventId_key" ON "EventRegistration"("userId", "eventId");
|
||||
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "User" ADD COLUMN "bio" TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "User" ADD COLUMN "characterClass" TEXT;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Event" ADD COLUMN "maxPlaces" INTEGER;
|
||||
ALTER TABLE "Event" ADD COLUMN "room" TEXT;
|
||||
ALTER TABLE "Event" ADD COLUMN "time" TEXT;
|
||||
@@ -0,0 +1,45 @@
|
||||
-- AlterTable
|
||||
-- SQLite ne supporte pas directement le changement de type, donc on doit recréer la table
|
||||
-- On convertit les dates string ISO en datetime
|
||||
|
||||
-- Créer une nouvelle table avec le bon type
|
||||
CREATE TABLE "Event_new" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"date" DATETIME NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"type" TEXT NOT NULL,
|
||||
"status" TEXT NOT NULL,
|
||||
"room" TEXT,
|
||||
"time" TEXT,
|
||||
"maxPlaces" INTEGER,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- Copier les données en convertissant les dates string en datetime
|
||||
INSERT INTO "Event_new" ("id", "date", "name", "description", "type", "status", "room", "time", "maxPlaces", "createdAt", "updatedAt")
|
||||
SELECT
|
||||
"id",
|
||||
datetime("date") as "date",
|
||||
"name",
|
||||
"description",
|
||||
"type",
|
||||
"status",
|
||||
"room",
|
||||
"time",
|
||||
"maxPlaces",
|
||||
"createdAt",
|
||||
"updatedAt"
|
||||
FROM "Event";
|
||||
|
||||
-- Supprimer l'ancienne table
|
||||
DROP TABLE "Event";
|
||||
|
||||
-- Renommer la nouvelle table
|
||||
ALTER TABLE "Event_new" RENAME TO "Event";
|
||||
|
||||
-- Recréer les index
|
||||
CREATE INDEX "Event_status_idx" ON "Event"("status");
|
||||
CREATE INDEX "Event_date_idx" ON "Event"("date");
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
-- RedefineTables
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "_Event_new" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"date" DATETIME NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"type" TEXT NOT NULL,
|
||||
"room" TEXT,
|
||||
"time" TEXT,
|
||||
"maxPlaces" INTEGER,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
INSERT INTO "_Event_new" ("id", "date", "name", "description", "type", "room", "time", "maxPlaces", "createdAt", "updatedAt") SELECT "id", "date", "name", "description", "type", "room", "time", "maxPlaces", "createdAt", "updatedAt" FROM "Event";
|
||||
DROP TABLE "Event";
|
||||
ALTER TABLE "_Event_new" RENAME TO "Event";
|
||||
CREATE INDEX "Event_date_idx" ON "Event"("date");
|
||||
PRAGMA foreign_keys=ON;
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
-- Mettre à jour les types d'événements existants
|
||||
UPDATE "Event" SET "type" = 'KATA' WHERE "type" = 'CODE_KATA';
|
||||
UPDATE "Event" SET "type" = 'KATA' WHERE "type" IN ('SUMMIT', 'LAUNCH', 'FESTIVAL', 'COMPETITION');
|
||||
@@ -0,0 +1,7 @@
|
||||
-- Mettre à jour les types d'événements existants
|
||||
-- CODE_KATA devient KATA
|
||||
UPDATE "Event" SET "type" = 'KATA' WHERE "type" = 'CODE_KATA';
|
||||
|
||||
-- Les autres types (SUMMIT, LAUNCH, FESTIVAL, COMPETITION) seront remplacés par KATA par défaut
|
||||
UPDATE "Event" SET "type" = 'KATA' WHERE "type" IN ('SUMMIT', 'LAUNCH', 'FESTIVAL', 'COMPETITION');
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Migration placeholder: EventFeedback table may have been created by a later migration
|
||||
-- This migration is kept for migration history consistency
|
||||
@@ -0,0 +1,22 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "EventFeedback" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"eventId" TEXT NOT NULL,
|
||||
"rating" INTEGER NOT NULL,
|
||||
"comment" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "EventFeedback_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "EventFeedback_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "EventFeedback_userId_eventId_key" ON "EventFeedback"("userId", "eventId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "EventFeedback_userId_idx" ON "EventFeedback"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "EventFeedback_eventId_idx" ON "EventFeedback"("eventId");
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "SitePreferences" ADD COLUMN "primaryColor" TEXT DEFAULT '#0be4cc';
|
||||
@@ -0,0 +1,33 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "Challenge" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"challengerId" TEXT NOT NULL,
|
||||
"challengedId" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"pointsReward" INTEGER NOT NULL DEFAULT 100,
|
||||
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
||||
"adminId" TEXT,
|
||||
"adminComment" TEXT,
|
||||
"winnerId" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"acceptedAt" DATETIME,
|
||||
"completedAt" DATETIME,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "Challenge_challengerId_fkey" FOREIGN KEY ("challengerId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "Challenge_challengedId_fkey" FOREIGN KEY ("challengedId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "Challenge_adminId_fkey" FOREIGN KEY ("adminId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
||||
CONSTRAINT "Challenge_winnerId_fkey" FOREIGN KEY ("winnerId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Challenge_challengerId_idx" ON "Challenge"("challengerId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Challenge_challengedId_idx" ON "Challenge"("challengedId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Challenge_status_idx" ON "Challenge"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Challenge_adminId_idx" ON "Challenge"("adminId");
|
||||
@@ -0,0 +1,22 @@
|
||||
-- AlterTable
|
||||
-- SQLite doesn't support DROP COLUMN directly, so we need to recreate the table
|
||||
CREATE TABLE "SitePreferences_new" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"homeBackground" TEXT,
|
||||
"eventsBackground" TEXT,
|
||||
"leaderboardBackground" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
|
||||
-- Copy data without primaryColor column
|
||||
INSERT INTO "SitePreferences_new" ("id", "homeBackground", "eventsBackground", "leaderboardBackground", "createdAt", "updatedAt")
|
||||
SELECT "id", "homeBackground", "eventsBackground", "leaderboardBackground", "createdAt", "updatedAt"
|
||||
FROM "SitePreferences";
|
||||
|
||||
-- Drop old table
|
||||
DROP TABLE "SitePreferences";
|
||||
|
||||
-- Rename new table
|
||||
ALTER TABLE "SitePreferences_new" RENAME TO "SitePreferences";
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_SitePreferences" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY DEFAULT 'global',
|
||||
"homeBackground" TEXT,
|
||||
"eventsBackground" TEXT,
|
||||
"leaderboardBackground" TEXT,
|
||||
"challengesBackground" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
INSERT INTO "new_SitePreferences" ("createdAt", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt") SELECT "createdAt", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt" FROM "SitePreferences";
|
||||
DROP TABLE "SitePreferences";
|
||||
ALTER TABLE "new_SitePreferences" RENAME TO "SitePreferences";
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
@@ -0,0 +1,18 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_SitePreferences" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY DEFAULT 'global',
|
||||
"homeBackground" TEXT,
|
||||
"eventsBackground" TEXT,
|
||||
"leaderboardBackground" TEXT,
|
||||
"challengesBackground" TEXT,
|
||||
"eventRegistrationPoints" INTEGER NOT NULL DEFAULT 100,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
INSERT INTO "new_SitePreferences" ("challengesBackground", "createdAt", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt") SELECT "challengesBackground", "createdAt", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt" FROM "SitePreferences";
|
||||
DROP TABLE "SitePreferences";
|
||||
ALTER TABLE "new_SitePreferences" RENAME TO "SitePreferences";
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
@@ -0,0 +1,19 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_SitePreferences" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY DEFAULT 'global',
|
||||
"homeBackground" TEXT,
|
||||
"eventsBackground" TEXT,
|
||||
"leaderboardBackground" TEXT,
|
||||
"challengesBackground" TEXT,
|
||||
"eventRegistrationPoints" INTEGER NOT NULL DEFAULT 100,
|
||||
"eventFeedbackPoints" INTEGER NOT NULL DEFAULT 50,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
INSERT INTO "new_SitePreferences" ("challengesBackground", "createdAt", "eventRegistrationPoints", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt") SELECT "challengesBackground", "createdAt", "eventRegistrationPoints", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt" FROM "SitePreferences";
|
||||
DROP TABLE "SitePreferences";
|
||||
ALTER TABLE "new_SitePreferences" RENAME TO "SitePreferences";
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
@@ -0,0 +1,19 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_SitePreferences" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY DEFAULT 'global',
|
||||
"homeBackground" TEXT,
|
||||
"eventsBackground" TEXT,
|
||||
"leaderboardBackground" TEXT,
|
||||
"challengesBackground" TEXT,
|
||||
"eventRegistrationPoints" INTEGER NOT NULL DEFAULT 100,
|
||||
"eventFeedbackPoints" INTEGER NOT NULL DEFAULT 100,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL
|
||||
);
|
||||
INSERT INTO "new_SitePreferences" ("challengesBackground", "createdAt", "eventFeedbackPoints", "eventRegistrationPoints", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt") SELECT "challengesBackground", "createdAt", "eventFeedbackPoints", "eventRegistrationPoints", "eventsBackground", "homeBackground", "id", "leaderboardBackground", "updatedAt" FROM "SitePreferences";
|
||||
DROP TABLE "SitePreferences";
|
||||
ALTER TABLE "new_SitePreferences" RENAME TO "SitePreferences";
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
@@ -0,0 +1,24 @@
|
||||
-- RedefineTables
|
||||
PRAGMA defer_foreign_keys=ON;
|
||||
PRAGMA foreign_keys=OFF;
|
||||
CREATE TABLE "new_EventFeedback" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"eventId" TEXT NOT NULL,
|
||||
"rating" INTEGER NOT NULL,
|
||||
"comment" TEXT,
|
||||
"isRead" BOOLEAN NOT NULL DEFAULT false,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "EventFeedback_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "EventFeedback_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
INSERT INTO "new_EventFeedback" ("comment", "createdAt", "eventId", "id", "rating", "updatedAt", "userId") SELECT "comment", "createdAt", "eventId", "id", "rating", "updatedAt", "userId" FROM "EventFeedback";
|
||||
DROP TABLE "EventFeedback";
|
||||
ALTER TABLE "new_EventFeedback" RENAME TO "EventFeedback";
|
||||
CREATE INDEX "EventFeedback_userId_idx" ON "EventFeedback"("userId");
|
||||
CREATE INDEX "EventFeedback_eventId_idx" ON "EventFeedback"("eventId");
|
||||
CREATE INDEX "EventFeedback_isRead_idx" ON "EventFeedback"("isRead");
|
||||
CREATE UNIQUE INDEX "EventFeedback_userId_eventId_key" ON "EventFeedback"("userId", "eventId");
|
||||
PRAGMA foreign_keys=ON;
|
||||
PRAGMA defer_foreign_keys=OFF;
|
||||
3
prisma/migrations.sqlite.backup/migration_lock.toml
Normal file
3
prisma/migrations.sqlite.backup/migration_lock.toml
Normal file
@@ -0,0 +1,3 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "postgresql"
|
||||
Reference in New Issue
Block a user