From 2c9c36605d49a1572fcc540c7484dff0e3c5b53e Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Fri, 10 Apr 2026 21:23:00 +0300 Subject: [PATCH] fix: consolidate migrations and fix Prisma ESM compatibility - Replace 3 partial migrations with single init migration from schema - Fixes missing backupEnabled, integrationType, and other columns - Move @prisma/client to dependencies for adapter-node externalization - Add ssr.external to prevent Vite bundling Prisma (fixes __dirname error) --- .../20260324165855_init/migration.sql | 187 ------------ .../migration.sql | 6 - .../migration.sql | 265 ++++++++++++++---- 3 files changed, 208 insertions(+), 250 deletions(-) delete mode 100644 prisma/migrations/20260324165855_init/migration.sql delete mode 100644 prisma/migrations/20260324212043_add_user_preferences/migration.sql rename prisma/migrations/{20260325092024_phase4_7_schema => 20260410200000_init}/migration.sql (55%) diff --git a/prisma/migrations/20260324165855_init/migration.sql b/prisma/migrations/20260324165855_init/migration.sql deleted file mode 100644 index 4cb084b..0000000 --- a/prisma/migrations/20260324165855_init/migration.sql +++ /dev/null @@ -1,187 +0,0 @@ --- CreateTable -CREATE TABLE "User" ( - "id" TEXT NOT NULL PRIMARY KEY, - "email" TEXT NOT NULL, - "password" TEXT, - "displayName" TEXT NOT NULL, - "avatarUrl" TEXT, - "authProvider" TEXT NOT NULL DEFAULT 'local', - "role" TEXT NOT NULL DEFAULT 'user', - "refreshToken" TEXT, - "refreshTokenExpiresAt" DATETIME, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL -); - --- CreateTable -CREATE TABLE "Group" ( - "id" TEXT NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "description" TEXT, - "isDefault" BOOLEAN NOT NULL DEFAULT false, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL -); - --- CreateTable -CREATE TABLE "UserGroup" ( - "id" TEXT NOT NULL PRIMARY KEY, - "userId" TEXT NOT NULL, - "groupId" TEXT NOT NULL, - CONSTRAINT "UserGroup_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT "UserGroup_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "App" ( - "id" TEXT NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "url" TEXT NOT NULL, - "icon" TEXT, - "iconType" TEXT NOT NULL DEFAULT 'lucide', - "description" TEXT, - "category" TEXT, - "tags" TEXT NOT NULL DEFAULT '', - "healthcheckEnabled" BOOLEAN NOT NULL DEFAULT false, - "healthcheckInterval" INTEGER NOT NULL DEFAULT 300, - "healthcheckMethod" TEXT NOT NULL DEFAULT 'GET', - "healthcheckExpectedStatus" INTEGER NOT NULL DEFAULT 200, - "healthcheckTimeout" INTEGER NOT NULL DEFAULT 5000, - "createdById" TEXT, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - CONSTRAINT "App_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "AppStatus" ( - "id" TEXT NOT NULL PRIMARY KEY, - "appId" TEXT NOT NULL, - "status" TEXT NOT NULL DEFAULT 'unknown', - "responseTime" INTEGER, - "checkedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "AppStatus_appId_fkey" FOREIGN KEY ("appId") REFERENCES "App" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "Board" ( - "id" TEXT NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "icon" TEXT, - "description" TEXT, - "isDefault" BOOLEAN NOT NULL DEFAULT false, - "isGuestAccessible" BOOLEAN NOT NULL DEFAULT false, - "backgroundConfig" TEXT, - "createdById" TEXT, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - CONSTRAINT "Board_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "Section" ( - "id" TEXT NOT NULL PRIMARY KEY, - "boardId" TEXT NOT NULL, - "title" TEXT NOT NULL, - "icon" TEXT, - "order" INTEGER NOT NULL DEFAULT 0, - "isExpandedByDefault" BOOLEAN NOT NULL DEFAULT true, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - CONSTRAINT "Section_boardId_fkey" FOREIGN KEY ("boardId") REFERENCES "Board" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "Widget" ( - "id" TEXT NOT NULL PRIMARY KEY, - "sectionId" TEXT NOT NULL, - "type" TEXT NOT NULL, - "order" INTEGER NOT NULL DEFAULT 0, - "config" TEXT NOT NULL DEFAULT '{}', - "appId" TEXT, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - CONSTRAINT "Widget_sectionId_fkey" FOREIGN KEY ("sectionId") REFERENCES "Section" ("id") ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT "Widget_appId_fkey" FOREIGN KEY ("appId") REFERENCES "App" ("id") ON DELETE SET NULL ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "Permission" ( - "id" TEXT NOT NULL PRIMARY KEY, - "entityType" TEXT NOT NULL, - "entityId" TEXT NOT NULL, - "targetType" TEXT NOT NULL, - "targetId" TEXT NOT NULL, - "level" TEXT NOT NULL, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL -); - --- CreateTable -CREATE TABLE "SystemSettings" ( - "id" TEXT NOT NULL PRIMARY KEY DEFAULT 'singleton', - "authMode" TEXT NOT NULL DEFAULT 'local', - "registrationEnabled" BOOLEAN NOT NULL DEFAULT true, - "oauthClientId" TEXT, - "oauthClientSecret" TEXT, - "oauthDiscoveryUrl" TEXT, - "defaultTheme" TEXT NOT NULL DEFAULT 'dark', - "defaultPrimaryColor" TEXT NOT NULL DEFAULT '#6366f1', - "healthcheckDefaults" TEXT NOT NULL DEFAULT '{}', - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- CreateIndex -CREATE INDEX "User_email_idx" ON "User"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Group_name_key" ON "Group"("name"); - --- CreateIndex -CREATE INDEX "UserGroup_userId_idx" ON "UserGroup"("userId"); - --- CreateIndex -CREATE INDEX "UserGroup_groupId_idx" ON "UserGroup"("groupId"); - --- CreateIndex -CREATE UNIQUE INDEX "UserGroup_userId_groupId_key" ON "UserGroup"("userId", "groupId"); - --- CreateIndex -CREATE INDEX "App_name_idx" ON "App"("name"); - --- CreateIndex -CREATE INDEX "App_category_idx" ON "App"("category"); - --- CreateIndex -CREATE INDEX "App_createdById_idx" ON "App"("createdById"); - --- CreateIndex -CREATE INDEX "AppStatus_appId_idx" ON "AppStatus"("appId"); - --- CreateIndex -CREATE INDEX "AppStatus_checkedAt_idx" ON "AppStatus"("checkedAt"); - --- CreateIndex -CREATE INDEX "Board_createdById_idx" ON "Board"("createdById"); - --- CreateIndex -CREATE INDEX "Section_boardId_idx" ON "Section"("boardId"); - --- CreateIndex -CREATE INDEX "Widget_sectionId_idx" ON "Widget"("sectionId"); - --- CreateIndex -CREATE INDEX "Widget_appId_idx" ON "Widget"("appId"); - --- CreateIndex -CREATE INDEX "Permission_entityType_entityId_idx" ON "Permission"("entityType", "entityId"); - --- CreateIndex -CREATE INDEX "Permission_targetType_targetId_idx" ON "Permission"("targetType", "targetId"); - --- CreateIndex -CREATE UNIQUE INDEX "Permission_entityType_entityId_targetType_targetId_key" ON "Permission"("entityType", "entityId", "targetType", "targetId"); diff --git a/prisma/migrations/20260324212043_add_user_preferences/migration.sql b/prisma/migrations/20260324212043_add_user_preferences/migration.sql deleted file mode 100644 index 3442b2b..0000000 --- a/prisma/migrations/20260324212043_add_user_preferences/migration.sql +++ /dev/null @@ -1,6 +0,0 @@ --- AlterTable -ALTER TABLE "User" ADD COLUMN "backgroundType" TEXT; -ALTER TABLE "User" ADD COLUMN "locale" TEXT; -ALTER TABLE "User" ADD COLUMN "primaryHue" INTEGER; -ALTER TABLE "User" ADD COLUMN "primarySaturation" INTEGER; -ALTER TABLE "User" ADD COLUMN "themeMode" TEXT; diff --git a/prisma/migrations/20260325092024_phase4_7_schema/migration.sql b/prisma/migrations/20260410200000_init/migration.sql similarity index 55% rename from prisma/migrations/20260325092024_phase4_7_schema/migration.sql rename to prisma/migrations/20260410200000_init/migration.sql index b6cda54..65535aa 100644 --- a/prisma/migrations/20260325092024_phase4_7_schema/migration.sql +++ b/prisma/migrations/20260410200000_init/migration.sql @@ -1,15 +1,160 @@ --- AlterTable -ALTER TABLE "Board" ADD COLUMN "backgroundType" TEXT; -ALTER TABLE "Board" ADD COLUMN "cardSize" TEXT; -ALTER TABLE "Board" ADD COLUMN "customCss" TEXT; -ALTER TABLE "Board" ADD COLUMN "themeHue" INTEGER; -ALTER TABLE "Board" ADD COLUMN "themeSaturation" INTEGER; -ALTER TABLE "Board" ADD COLUMN "wallpaperBlur" INTEGER; -ALTER TABLE "Board" ADD COLUMN "wallpaperOverlay" REAL; -ALTER TABLE "Board" ADD COLUMN "wallpaperUrl" TEXT; +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL PRIMARY KEY, + "email" TEXT NOT NULL, + "password" TEXT, + "displayName" TEXT NOT NULL, + "avatarUrl" TEXT, + "authProvider" TEXT NOT NULL DEFAULT 'local', + "role" TEXT NOT NULL DEFAULT 'user', + "refreshToken" TEXT, + "refreshTokenExpiresAt" DATETIME, + "onboardingComplete" BOOLEAN NOT NULL DEFAULT false, + "trackRecentApps" BOOLEAN NOT NULL DEFAULT true, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL, + "themeMode" TEXT, + "primaryHue" INTEGER, + "primarySaturation" INTEGER, + "backgroundType" TEXT, + "locale" TEXT +); --- AlterTable -ALTER TABLE "Section" ADD COLUMN "cardSize" TEXT; +-- CreateTable +CREATE TABLE "Group" ( + "id" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "description" TEXT, + "isDefault" BOOLEAN NOT NULL DEFAULT false, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL +); + +-- CreateTable +CREATE TABLE "UserGroup" ( + "id" TEXT NOT NULL PRIMARY KEY, + "userId" TEXT NOT NULL, + "groupId" TEXT NOT NULL, + CONSTRAINT "UserGroup_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT "UserGroup_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "App" ( + "id" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "url" TEXT NOT NULL, + "icon" TEXT, + "iconType" TEXT NOT NULL DEFAULT 'lucide', + "description" TEXT, + "category" TEXT, + "tags" TEXT NOT NULL DEFAULT '', + "healthcheckEnabled" BOOLEAN NOT NULL DEFAULT false, + "healthcheckInterval" INTEGER NOT NULL DEFAULT 300, + "healthcheckMethod" TEXT NOT NULL DEFAULT 'GET', + "healthcheckExpectedStatus" INTEGER NOT NULL DEFAULT 200, + "healthcheckTimeout" INTEGER NOT NULL DEFAULT 5000, + "integrationType" TEXT, + "integrationConfig" TEXT, + "integrationEnabled" BOOLEAN NOT NULL DEFAULT false, + "createdById" TEXT, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL, + CONSTRAINT "App_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "AppStatus" ( + "id" TEXT NOT NULL PRIMARY KEY, + "appId" TEXT NOT NULL, + "status" TEXT NOT NULL DEFAULT 'unknown', + "responseTime" INTEGER, + "checkedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT "AppStatus_appId_fkey" FOREIGN KEY ("appId") REFERENCES "App" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "Board" ( + "id" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "icon" TEXT, + "description" TEXT, + "isDefault" BOOLEAN NOT NULL DEFAULT false, + "isGuestAccessible" BOOLEAN NOT NULL DEFAULT false, + "backgroundConfig" TEXT, + "themeHue" INTEGER, + "themeSaturation" INTEGER, + "backgroundType" TEXT, + "cardSize" TEXT, + "wallpaperUrl" TEXT, + "wallpaperBlur" INTEGER, + "wallpaperOverlay" REAL, + "customCss" TEXT, + "createdById" TEXT, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL, + CONSTRAINT "Board_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "Section" ( + "id" TEXT NOT NULL PRIMARY KEY, + "boardId" TEXT NOT NULL, + "title" TEXT NOT NULL, + "icon" TEXT, + "order" INTEGER NOT NULL DEFAULT 0, + "isExpandedByDefault" BOOLEAN NOT NULL DEFAULT true, + "cardSize" TEXT, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL, + CONSTRAINT "Section_boardId_fkey" FOREIGN KEY ("boardId") REFERENCES "Board" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "Widget" ( + "id" TEXT NOT NULL PRIMARY KEY, + "sectionId" TEXT NOT NULL, + "type" TEXT NOT NULL, + "order" INTEGER NOT NULL DEFAULT 0, + "config" TEXT NOT NULL DEFAULT '{}', + "appId" TEXT, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL, + CONSTRAINT "Widget_sectionId_fkey" FOREIGN KEY ("sectionId") REFERENCES "Section" ("id") ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT "Widget_appId_fkey" FOREIGN KEY ("appId") REFERENCES "App" ("id") ON DELETE SET NULL ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "Permission" ( + "id" TEXT NOT NULL PRIMARY KEY, + "entityType" TEXT NOT NULL, + "entityId" TEXT NOT NULL, + "targetType" TEXT NOT NULL, + "targetId" TEXT NOT NULL, + "level" TEXT NOT NULL, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL +); + +-- CreateTable +CREATE TABLE "SystemSettings" ( + "id" TEXT NOT NULL PRIMARY KEY DEFAULT 'singleton', + "authMode" TEXT NOT NULL DEFAULT 'local', + "registrationEnabled" BOOLEAN NOT NULL DEFAULT true, + "oauthClientId" TEXT, + "oauthClientSecret" TEXT, + "oauthDiscoveryUrl" TEXT, + "defaultTheme" TEXT NOT NULL DEFAULT 'dark', + "defaultPrimaryColor" TEXT NOT NULL DEFAULT '#6366f1', + "healthcheckDefaults" TEXT NOT NULL DEFAULT '{}', + "customCss" TEXT, + "onboardingComplete" BOOLEAN NOT NULL DEFAULT false, + "backupEnabled" BOOLEAN NOT NULL DEFAULT false, + "backupCronExpression" TEXT NOT NULL DEFAULT '0 3 * * *', + "backupMaxCount" INTEGER NOT NULL DEFAULT 10, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL +); -- CreateTable CREATE TABLE "Tag" ( @@ -121,54 +266,59 @@ CREATE TABLE "BoardTemplate" ( CONSTRAINT "BoardTemplate_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE ); --- RedefineTables -PRAGMA defer_foreign_keys=ON; -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_SystemSettings" ( - "id" TEXT NOT NULL PRIMARY KEY DEFAULT 'singleton', - "authMode" TEXT NOT NULL DEFAULT 'local', - "registrationEnabled" BOOLEAN NOT NULL DEFAULT true, - "oauthClientId" TEXT, - "oauthClientSecret" TEXT, - "oauthDiscoveryUrl" TEXT, - "defaultTheme" TEXT NOT NULL DEFAULT 'dark', - "defaultPrimaryColor" TEXT NOT NULL DEFAULT '#6366f1', - "healthcheckDefaults" TEXT NOT NULL DEFAULT '{}', - "customCss" TEXT, - "onboardingComplete" BOOLEAN NOT NULL DEFAULT false, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL -); -INSERT INTO "new_SystemSettings" ("authMode", "createdAt", "defaultPrimaryColor", "defaultTheme", "healthcheckDefaults", "id", "oauthClientId", "oauthClientSecret", "oauthDiscoveryUrl", "registrationEnabled", "updatedAt") SELECT "authMode", "createdAt", "defaultPrimaryColor", "defaultTheme", "healthcheckDefaults", "id", "oauthClientId", "oauthClientSecret", "oauthDiscoveryUrl", "registrationEnabled", "updatedAt" FROM "SystemSettings"; -DROP TABLE "SystemSettings"; -ALTER TABLE "new_SystemSettings" RENAME TO "SystemSettings"; -CREATE TABLE "new_User" ( - "id" TEXT NOT NULL PRIMARY KEY, - "email" TEXT NOT NULL, - "password" TEXT, - "displayName" TEXT NOT NULL, - "avatarUrl" TEXT, - "authProvider" TEXT NOT NULL DEFAULT 'local', - "role" TEXT NOT NULL DEFAULT 'user', - "refreshToken" TEXT, - "refreshTokenExpiresAt" DATETIME, - "onboardingComplete" BOOLEAN NOT NULL DEFAULT false, - "trackRecentApps" BOOLEAN NOT NULL DEFAULT true, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "themeMode" TEXT, - "primaryHue" INTEGER, - "primarySaturation" INTEGER, - "backgroundType" TEXT, - "locale" TEXT -); -INSERT INTO "new_User" ("authProvider", "avatarUrl", "backgroundType", "createdAt", "displayName", "email", "id", "locale", "password", "primaryHue", "primarySaturation", "refreshToken", "refreshTokenExpiresAt", "role", "themeMode", "updatedAt") SELECT "authProvider", "avatarUrl", "backgroundType", "createdAt", "displayName", "email", "id", "locale", "password", "primaryHue", "primarySaturation", "refreshToken", "refreshTokenExpiresAt", "role", "themeMode", "updatedAt" FROM "User"; -DROP TABLE "User"; -ALTER TABLE "new_User" RENAME TO "User"; +-- CreateIndex CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- CreateIndex CREATE INDEX "User_email_idx" ON "User"("email"); -PRAGMA foreign_keys=ON; -PRAGMA defer_foreign_keys=OFF; + +-- CreateIndex +CREATE UNIQUE INDEX "Group_name_key" ON "Group"("name"); + +-- CreateIndex +CREATE INDEX "UserGroup_userId_idx" ON "UserGroup"("userId"); + +-- CreateIndex +CREATE INDEX "UserGroup_groupId_idx" ON "UserGroup"("groupId"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserGroup_userId_groupId_key" ON "UserGroup"("userId", "groupId"); + +-- CreateIndex +CREATE INDEX "App_name_idx" ON "App"("name"); + +-- CreateIndex +CREATE INDEX "App_category_idx" ON "App"("category"); + +-- CreateIndex +CREATE INDEX "App_createdById_idx" ON "App"("createdById"); + +-- CreateIndex +CREATE INDEX "AppStatus_appId_idx" ON "AppStatus"("appId"); + +-- CreateIndex +CREATE INDEX "AppStatus_checkedAt_idx" ON "AppStatus"("checkedAt"); + +-- CreateIndex +CREATE INDEX "Board_createdById_idx" ON "Board"("createdById"); + +-- CreateIndex +CREATE INDEX "Section_boardId_idx" ON "Section"("boardId"); + +-- CreateIndex +CREATE INDEX "Widget_sectionId_idx" ON "Widget"("sectionId"); + +-- CreateIndex +CREATE INDEX "Widget_appId_idx" ON "Widget"("appId"); + +-- CreateIndex +CREATE INDEX "Permission_entityType_entityId_idx" ON "Permission"("entityType", "entityId"); + +-- CreateIndex +CREATE INDEX "Permission_targetType_targetId_idx" ON "Permission"("targetType", "targetId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Permission_entityType_entityId_targetType_targetId_key" ON "Permission"("entityType", "entityId", "targetType", "targetId"); -- CreateIndex CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name"); @@ -241,3 +391,4 @@ CREATE INDEX "AuditLog_createdAt_idx" ON "AuditLog"("createdAt"); -- CreateIndex CREATE INDEX "BoardTemplate_createdById_idx" ON "BoardTemplate"("createdById"); +