courrier msft oauth
This commit is contained in:
parent
a7dbd7cd85
commit
cb095ab7ee
114
prisma/complete_migration.sql
Normal file
114
prisma/complete_migration.sql
Normal file
@ -0,0 +1,114 @@
|
||||
-- Complete migration script for all Prisma tables
|
||||
-- Run this directly on your PostgreSQL server
|
||||
|
||||
-- Create User table if it doesn't exist
|
||||
CREATE TABLE IF NOT EXISTS "User" (
|
||||
"id" TEXT PRIMARY KEY,
|
||||
"email" TEXT UNIQUE NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL
|
||||
);
|
||||
|
||||
-- Create Calendar table if it doesn't exist
|
||||
CREATE TABLE IF NOT EXISTS "Calendar" (
|
||||
"id" TEXT PRIMARY KEY,
|
||||
"name" TEXT NOT NULL,
|
||||
"color" TEXT NOT NULL DEFAULT '#0082c9',
|
||||
"description" TEXT,
|
||||
"userId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Create index on Calendar
|
||||
CREATE INDEX IF NOT EXISTS "Calendar_userId_idx" ON "Calendar"("userId");
|
||||
|
||||
-- Create Event table if it doesn't exist
|
||||
CREATE TABLE IF NOT EXISTS "Event" (
|
||||
"id" TEXT PRIMARY KEY,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"start" TIMESTAMP(3) NOT NULL,
|
||||
"end" TIMESTAMP(3) NOT NULL,
|
||||
"location" TEXT,
|
||||
"isAllDay" BOOLEAN NOT NULL DEFAULT false,
|
||||
"calendarId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
FOREIGN KEY ("calendarId") REFERENCES "Calendar"("id") ON DELETE CASCADE,
|
||||
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Create indexes on Event
|
||||
CREATE INDEX IF NOT EXISTS "Event_calendarId_idx" ON "Event"("calendarId");
|
||||
CREATE INDEX IF NOT EXISTS "Event_userId_idx" ON "Event"("userId");
|
||||
|
||||
-- Create or update MailCredentials table with OAuth support
|
||||
DO $$
|
||||
BEGIN
|
||||
-- Check if MailCredentials table exists
|
||||
IF EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'MailCredentials') THEN
|
||||
-- Alter existing table to add OAuth fields
|
||||
BEGIN
|
||||
-- Make password column nullable
|
||||
ALTER TABLE "MailCredentials" ALTER COLUMN "password" DROP NOT NULL;
|
||||
EXCEPTION WHEN undefined_column THEN
|
||||
-- Password column doesn't exist or is already nullable
|
||||
END;
|
||||
|
||||
-- Add OAuth columns if they don't exist
|
||||
BEGIN
|
||||
ALTER TABLE "MailCredentials"
|
||||
ADD COLUMN IF NOT EXISTS "useOAuth" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS "refreshToken" TEXT,
|
||||
ADD COLUMN IF NOT EXISTS "accessToken" TEXT,
|
||||
ADD COLUMN IF NOT EXISTS "tokenExpiry" TIMESTAMP(3);
|
||||
EXCEPTION WHEN duplicate_column THEN
|
||||
-- Columns already exist
|
||||
END;
|
||||
ELSE
|
||||
-- Create MailCredentials table with OAuth support
|
||||
CREATE TABLE "MailCredentials" (
|
||||
"id" TEXT PRIMARY KEY,
|
||||
"userId" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT,
|
||||
"host" TEXT NOT NULL,
|
||||
"port" INTEGER NOT NULL,
|
||||
"secure" BOOLEAN NOT NULL DEFAULT true,
|
||||
"useOAuth" BOOLEAN NOT NULL DEFAULT false,
|
||||
"refreshToken" TEXT,
|
||||
"accessToken" TEXT,
|
||||
"tokenExpiry" TIMESTAMP(3),
|
||||
"smtp_host" TEXT,
|
||||
"smtp_port" INTEGER,
|
||||
"smtp_secure" BOOLEAN DEFAULT false,
|
||||
"display_name" TEXT,
|
||||
"color" TEXT DEFAULT '#0082c9',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE,
|
||||
UNIQUE("userId", "email")
|
||||
);
|
||||
|
||||
-- Create index on MailCredentials
|
||||
CREATE INDEX IF NOT EXISTS "MailCredentials_userId_idx" ON "MailCredentials"("userId");
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Create WebDAVCredentials table if it doesn't exist
|
||||
CREATE TABLE IF NOT EXISTS "WebDAVCredentials" (
|
||||
"id" TEXT PRIMARY KEY,
|
||||
"userId" TEXT UNIQUE NOT NULL,
|
||||
"username" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- Create index on WebDAVCredentials
|
||||
CREATE INDEX IF NOT EXISTS "WebDAVCredentials_userId_idx" ON "WebDAVCredentials"("userId");
|
||||
@ -1,7 +0,0 @@
|
||||
-- AlterTable to make password optional and add OAuth fields
|
||||
ALTER TABLE "MailCredentials"
|
||||
ALTER COLUMN "password" DROP NOT NULL,
|
||||
ADD COLUMN "useOAuth" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "refreshToken" TEXT,
|
||||
ADD COLUMN "accessToken" TEXT,
|
||||
ADD COLUMN "tokenExpiry" TIMESTAMP(3);
|
||||
@ -1,38 +0,0 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "Calendar" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"color" TEXT NOT NULL DEFAULT '#0082c9',
|
||||
"description" TEXT,
|
||||
"userId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Calendar_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Event" (
|
||||
"id" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"start" TIMESTAMP(3) NOT NULL,
|
||||
"end" TIMESTAMP(3) NOT NULL,
|
||||
"location" TEXT,
|
||||
"isAllDay" BOOLEAN NOT NULL DEFAULT false,
|
||||
"calendarId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Event_calendarId_idx" ON "Event"("calendarId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Event_userId_idx" ON "Event"("userId");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Event" ADD CONSTRAINT "Event_calendarId_fkey" FOREIGN KEY ("calendarId") REFERENCES "Calendar"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@ -1,3 +0,0 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "postgresql"
|
||||
139
scripts/regenerate-migrations.sh
Executable file
139
scripts/regenerate-migrations.sh
Executable file
@ -0,0 +1,139 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to regenerate Prisma migrations properly
|
||||
|
||||
# Step 1: Remove existing migrations
|
||||
echo "Removing existing migrations..."
|
||||
rm -rf prisma/migrations
|
||||
|
||||
# Step 2: Create migration directory
|
||||
mkdir -p prisma/migrations/20240612000000_initial_schema
|
||||
|
||||
# Step 3: Create migration file
|
||||
cat > prisma/migrations/20240612000000_initial_schema/migration.sql << EOL
|
||||
-- CreateTable
|
||||
CREATE TABLE "User" (
|
||||
"id" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Calendar" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"color" TEXT NOT NULL DEFAULT '#0082c9',
|
||||
"description" TEXT,
|
||||
"userId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Calendar_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Event" (
|
||||
"id" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"start" TIMESTAMP(3) NOT NULL,
|
||||
"end" TIMESTAMP(3) NOT NULL,
|
||||
"location" TEXT,
|
||||
"isAllDay" BOOLEAN NOT NULL DEFAULT false,
|
||||
"calendarId" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "MailCredentials" (
|
||||
"id" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT,
|
||||
"host" TEXT NOT NULL,
|
||||
"port" INTEGER NOT NULL,
|
||||
"secure" BOOLEAN NOT NULL DEFAULT true,
|
||||
"useOAuth" BOOLEAN NOT NULL DEFAULT false,
|
||||
"refreshToken" TEXT,
|
||||
"accessToken" TEXT,
|
||||
"tokenExpiry" TIMESTAMP(3),
|
||||
"smtp_host" TEXT,
|
||||
"smtp_port" INTEGER,
|
||||
"smtp_secure" BOOLEAN DEFAULT false,
|
||||
"display_name" TEXT,
|
||||
"color" TEXT DEFAULT '#0082c9',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "MailCredentials_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "WebDAVCredentials" (
|
||||
"id" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"username" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "WebDAVCredentials_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Calendar_userId_idx" ON "Calendar"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Event_calendarId_idx" ON "Event"("calendarId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Event_userId_idx" ON "Event"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "MailCredentials_userId_email_key" ON "MailCredentials"("userId", "email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "MailCredentials_userId_idx" ON "MailCredentials"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "WebDAVCredentials_userId_key" ON "WebDAVCredentials"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "WebDAVCredentials_userId_idx" ON "WebDAVCredentials"("userId");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Calendar" ADD CONSTRAINT "Calendar_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Event" ADD CONSTRAINT "Event_calendarId_fkey" FOREIGN KEY ("calendarId") REFERENCES "Calendar"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Event" ADD CONSTRAINT "Event_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "MailCredentials" ADD CONSTRAINT "MailCredentials_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "WebDAVCredentials" ADD CONSTRAINT "WebDAVCredentials_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EOL
|
||||
|
||||
# Step 4: Create migration_lock.toml file
|
||||
cat > prisma/migrations/migration_lock.toml << EOL
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (i.e. Git)
|
||||
provider = "postgresql"
|
||||
EOL
|
||||
|
||||
echo "Migrations regenerated successfully!"
|
||||
echo "Now run: npx prisma migrate resolve --applied 20240612000000_initial_schema"
|
||||
Loading…
Reference in New Issue
Block a user