From 1db235baa38fd14af783fa70051bd20a07c0d961 Mon Sep 17 00:00:00 2001 From: mARTin Date: Tue, 3 Mar 2026 15:23:15 +0100 Subject: [PATCH] fix(prisma): manual sql migration for ext_expires_in --- .../20260303_add_ext_expires_in/migration.sql | 1 + .../20260303_extend_accounts/migration.sql | 345 ++++++++++++++++++ 2 files changed, 346 insertions(+) create mode 100644 prisma/migrations/20260303_add_ext_expires_in/migration.sql create mode 100644 prisma/migrations/20260303_extend_accounts/migration.sql diff --git a/prisma/migrations/20260303_add_ext_expires_in/migration.sql b/prisma/migrations/20260303_add_ext_expires_in/migration.sql new file mode 100644 index 0000000..22c93a3 --- /dev/null +++ b/prisma/migrations/20260303_add_ext_expires_in/migration.sql @@ -0,0 +1 @@ +ALTER TABLE "Account" ADD COLUMN "ext_expires_in" INTEGER; diff --git a/prisma/migrations/20260303_extend_accounts/migration.sql b/prisma/migrations/20260303_extend_accounts/migration.sql new file mode 100644 index 0000000..ce34145 --- /dev/null +++ b/prisma/migrations/20260303_extend_accounts/migration.sql @@ -0,0 +1,345 @@ +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "accountNumber" SERIAL NOT NULL, + "email" TEXT NOT NULL, + "passwordHash" TEXT, + "name" TEXT, + "image" TEXT, + "emailVerified" TIMESTAMP(3), + "verifiedAt" TIMESTAMP(3), + "emailVerificationToken" TEXT, + "emailVerificationExpires" TIMESTAMP(3), + "passwordResetToken" TEXT, + "passwordResetExpires" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "timezone" TEXT NOT NULL DEFAULT 'UTC', + "autoRolling" BOOLEAN NOT NULL DEFAULT false, + "protectEventTimes" BOOLEAN NOT NULL DEFAULT false, + "language" TEXT NOT NULL DEFAULT 'de', + "dateFormat" TEXT NOT NULL DEFAULT 'yyyy-MM-dd', + "timeFormat" TEXT NOT NULL DEFAULT '24h', + "startHour" INTEGER NOT NULL DEFAULT 8, + "endHour" INTEGER NOT NULL DEFAULT 18, + "showNextTask" BOOLEAN NOT NULL DEFAULT false, + "calendarEditMode" BOOLEAN NOT NULL DEFAULT false, + "focusTimerDuration" INTEGER NOT NULL DEFAULT 25, + "focusBreakDuration" INTEGER NOT NULL DEFAULT 5, + "showTimeGrid" BOOLEAN NOT NULL DEFAULT true, + "showSomeday" BOOLEAN NOT NULL DEFAULT true, + "showAllDayEvents" BOOLEAN NOT NULL DEFAULT true, + "showSchedule" BOOLEAN NOT NULL DEFAULT true, + "cellDuration" INTEGER NOT NULL DEFAULT 30, + "viewStyle" TEXT NOT NULL DEFAULT 'simple', + "viewDays" INTEGER NOT NULL DEFAULT 7, + "fontSize" TEXT NOT NULL DEFAULT 'M', + "goalFallbackType" TEXT NOT NULL DEFAULT 'quote', + "goalDefaultSentence" TEXT NOT NULL DEFAULT 'goal of the week', + "goalFontFamily" TEXT DEFAULT 'Lato', + "goalFontSize" TEXT DEFAULT '1rem', + "goalFontWeight" TEXT DEFAULT '500', + "headlineFont" TEXT NOT NULL DEFAULT 'Oswald', + "headlineFontSize" TEXT DEFAULT '1.5rem', + "headlineFontWeight" TEXT DEFAULT '900', + "dateFontFamily" TEXT DEFAULT 'Inter', + "dateFontSize" TEXT DEFAULT '0.65rem', + "dateFontWeight" TEXT DEFAULT '400', + "timeTaskFontFamily" TEXT DEFAULT 'Inter', + "timeTaskFontSize" TEXT DEFAULT '0.75rem', + "timeTaskFontWeight" TEXT DEFAULT '500', + "bodyFont" TEXT NOT NULL DEFAULT 'Inter', + "taskFontFamily" TEXT DEFAULT 'Inter', + "taskFontSize" TEXT DEFAULT '0.9rem', + "taskFontWeight" TEXT DEFAULT '400', + "eventFontFamily" TEXT DEFAULT 'Inter', + "eventFontSize" TEXT DEFAULT '0.85rem', + "eventFontWeight" TEXT DEFAULT '400', + "fontWeight" TEXT NOT NULL DEFAULT '400', + "weekdayColor" TEXT DEFAULT '#0ea5e9', + "dateColor" TEXT DEFAULT '#888888', + "taskColor" TEXT DEFAULT '#333333', + "todayHighlightColor" TEXT DEFAULT '#f0fafa', + "weekendColorSat" TEXT DEFAULT '#ffc107', + "weekendColorSun" TEXT DEFAULT '#dc2626', + "pastDayColor" TEXT DEFAULT '#a6a6a7', + "goalScope" TEXT NOT NULL DEFAULT 'week', + "dateLayout" TEXT NOT NULL DEFAULT 'right', + "dateAlignment" TEXT NOT NULL DEFAULT 'center', + "hourLabelFormat" TEXT NOT NULL DEFAULT 'short', + "showSubHourSlots" BOOLEAN NOT NULL DEFAULT true, + "dayHeaderGap" TEXT DEFAULT '0.75em', + "allDayPosition" TEXT NOT NULL DEFAULT 'above', + "cwColor" TEXT DEFAULT '#333333', + "cwFontFamily" TEXT DEFAULT 'Oswald', + "cwFontSize" TEXT DEFAULT '1.5rem', + "cwFontWeight" TEXT DEFAULT '700', + "yearColor" TEXT DEFAULT '#333333', + "yearFontFamily" TEXT DEFAULT 'Oswald', + "yearFontSize" TEXT DEFAULT '1.5rem', + "yearFontWeight" TEXT DEFAULT '700', + "showTaskCheckboxes" BOOLEAN NOT NULL DEFAULT false, + "showCompletedTasks" BOOLEAN NOT NULL DEFAULT true, + "showLines" BOOLEAN NOT NULL DEFAULT true, + "startDayOffset" INTEGER NOT NULL DEFAULT -1, + "quoteSourceUrls" TEXT[] DEFAULT ARRAY[]::TEXT[], + "emailVerificationCode" TEXT, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Account" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "type" TEXT NOT NULL, + "provider" TEXT NOT NULL, + "providerAccountId" TEXT NOT NULL, + "refresh_token" TEXT, + "access_token" TEXT, + "expires_at" INTEGER, + "token_type" TEXT, + "scope" TEXT, + "id_token" TEXT, + "session_state" TEXT, + "ext_expires_in" INTEGER, + + CONSTRAINT "Account_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Session" ( + "id" TEXT NOT NULL, + "sessionToken" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Session_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "VerificationToken" ( + "identifier" TEXT NOT NULL, + "token" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL +); + +-- CreateTable +CREATE TABLE "Task" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT, + "markdownContent" TEXT, + "completed" BOOLEAN NOT NULL DEFAULT false, + "isRolling" BOOLEAN NOT NULL DEFAULT false, + "order" INTEGER NOT NULL DEFAULT 0, + "dayOfWeek" INTEGER, + "scheduledDate" TIMESTAMP(3), + "somedayListId" TEXT, + "originalDate" TIMESTAMP(3), + "startTime" TEXT, + "endTime" TEXT, + "isRecurring" BOOLEAN NOT NULL DEFAULT false, + "recurrenceInterval" INTEGER, + "recurrenceUnit" TEXT, + "recurrenceTime" TEXT, + "recurrenceEndDate" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "externalId" TEXT, + "externalProvider" TEXT, + "externalListId" TEXT, + "lastSyncedAt" TIMESTAMP(3), + "deletedAt" TIMESTAMP(3), + "parentTaskId" TEXT, + "projectId" TEXT, + "somedaySlotIndex" INTEGER, + + CONSTRAINT "Task_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "SomedayList" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "title" TEXT NOT NULL, + "order" INTEGER NOT NULL DEFAULT 0, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "externalId" TEXT, + "externalProvider" TEXT, + "lastSyncedAt" TIMESTAMP(3), + + CONSTRAINT "SomedayList_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CalendarConnection" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "provider" TEXT NOT NULL, + "accessToken" TEXT NOT NULL, + "refreshToken" TEXT, + "expiresAt" TIMESTAMP(3), + "calendars" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "CalendarConnection_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CachedCalendarEvent" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "externalId" TEXT NOT NULL, + "connectionId" TEXT NOT NULL, + "provider" TEXT NOT NULL, + "calendarId" TEXT NOT NULL, + "calendarTitle" TEXT NOT NULL, + "calendarColor" TEXT, + "title" TEXT NOT NULL, + "description" TEXT, + "location" TEXT, + "url" TEXT, + "recurringEventId" TEXT, + "isRecurring" BOOLEAN NOT NULL DEFAULT false, + "startDateTime" TIMESTAMP(3), + "startDate" TEXT, + "endDateTime" TIMESTAMP(3), + "endDate" TEXT, + "weekStart" TIMESTAMP(3) NOT NULL, + "syncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "CachedCalendarEvent_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "WeeklyGoal" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "weekStart" TIMESTAMP(3) NOT NULL, + "text" TEXT NOT NULL DEFAULT 'your goal of this week', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "WeeklyGoal_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Project" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "name" TEXT NOT NULL, + "icon" TEXT, + "color" TEXT, + "description" TEXT, + "order" INTEGER NOT NULL DEFAULT 0, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Project_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_accountNumber_key" ON "User"("accountNumber"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token"); + +-- CreateIndex +CREATE INDEX "Task_userId_dayOfWeek_idx" ON "Task"("userId", "dayOfWeek"); + +-- CreateIndex +CREATE INDEX "Task_userId_scheduledDate_idx" ON "Task"("userId", "scheduledDate"); + +-- CreateIndex +CREATE INDEX "Task_userId_somedayListId_idx" ON "Task"("userId", "somedayListId"); + +-- CreateIndex +CREATE INDEX "Task_userId_externalId_idx" ON "Task"("userId", "externalId"); + +-- CreateIndex +CREATE INDEX "Task_userId_deletedAt_idx" ON "Task"("userId", "deletedAt"); + +-- CreateIndex +CREATE INDEX "Task_userId_projectId_idx" ON "Task"("userId", "projectId"); + +-- CreateIndex +CREATE INDEX "Task_parentTaskId_idx" ON "Task"("parentTaskId"); + +-- CreateIndex +CREATE INDEX "SomedayList_userId_idx" ON "SomedayList"("userId"); + +-- CreateIndex +CREATE INDEX "CachedCalendarEvent_userId_startDateTime_idx" ON "CachedCalendarEvent"("userId", "startDateTime"); + +-- CreateIndex +CREATE INDEX "CachedCalendarEvent_userId_startDate_idx" ON "CachedCalendarEvent"("userId", "startDate"); + +-- CreateIndex +CREATE INDEX "CachedCalendarEvent_connectionId_weekStart_idx" ON "CachedCalendarEvent"("connectionId", "weekStart"); + +-- CreateIndex +CREATE UNIQUE INDEX "CachedCalendarEvent_userId_externalId_provider_key" ON "CachedCalendarEvent"("userId", "externalId", "provider"); + +-- CreateIndex +CREATE INDEX "WeeklyGoal_userId_idx" ON "WeeklyGoal"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "WeeklyGoal_userId_weekStart_key" ON "WeeklyGoal"("userId", "weekStart"); + +-- CreateIndex +CREATE INDEX "Project_userId_idx" ON "Project"("userId"); + +-- AddForeignKey +ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Task" ADD CONSTRAINT "Task_parentTaskId_fkey" FOREIGN KEY ("parentTaskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Task" ADD CONSTRAINT "Task_somedayListId_fkey" FOREIGN KEY ("somedayListId") REFERENCES "SomedayList"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Task" ADD CONSTRAINT "Task_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Task" ADD CONSTRAINT "Task_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "SomedayList" ADD CONSTRAINT "SomedayList_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CalendarConnection" ADD CONSTRAINT "CalendarConnection_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CachedCalendarEvent" ADD CONSTRAINT "CachedCalendarEvent_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "CalendarConnection"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CachedCalendarEvent" ADD CONSTRAINT "CachedCalendarEvent_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "WeeklyGoal" ADD CONSTRAINT "WeeklyGoal_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Project" ADD CONSTRAINT "Project_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; +