139 lines
4.2 KiB
Bash
Executable File
139 lines
4.2 KiB
Bash
Executable File
#!/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" |