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