diff --git a/apps/api/prisma/migrations/20260208000000_add_missing_tables/migration.sql b/apps/api/prisma/migrations/20260208000000_add_missing_tables/migration.sql index 26f6d58..d8edb5f 100644 --- a/apps/api/prisma/migrations/20260208000000_add_missing_tables/migration.sql +++ b/apps/api/prisma/migrations/20260208000000_add_missing_tables/migration.sql @@ -1,3 +1,38 @@ +-- RecreateEnum: FormalityLevel was dropped in 20260129235248_add_link_storage_fields +CREATE TYPE "FormalityLevel" AS ENUM ('VERY_CASUAL', 'CASUAL', 'NEUTRAL', 'FORMAL', 'VERY_FORMAL'); + +-- RecreateTable: personalities was dropped in 20260129235248_add_link_storage_fields +-- Recreated with current schema (display_name, system_prompt, temperature, etc.) +CREATE TABLE "personalities" ( + "id" UUID NOT NULL, + "workspace_id" UUID NOT NULL, + "name" TEXT NOT NULL, + "display_name" TEXT NOT NULL, + "description" TEXT, + "system_prompt" TEXT NOT NULL, + "temperature" DOUBLE PRECISION, + "max_tokens" INTEGER, + "llm_provider_instance_id" UUID, + "is_default" BOOLEAN NOT NULL DEFAULT false, + "is_enabled" BOOLEAN NOT NULL DEFAULT true, + "created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMPTZ NOT NULL, + + CONSTRAINT "personalities_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex: personalities +CREATE UNIQUE INDEX "personalities_id_workspace_id_key" ON "personalities"("id", "workspace_id"); +CREATE UNIQUE INDEX "personalities_workspace_id_name_key" ON "personalities"("workspace_id", "name"); +CREATE INDEX "personalities_workspace_id_idx" ON "personalities"("workspace_id"); +CREATE INDEX "personalities_workspace_id_is_default_idx" ON "personalities"("workspace_id", "is_default"); +CREATE INDEX "personalities_workspace_id_is_enabled_idx" ON "personalities"("workspace_id", "is_enabled"); +CREATE INDEX "personalities_llm_provider_instance_id_idx" ON "personalities"("llm_provider_instance_id"); + +-- AddForeignKey: personalities +ALTER TABLE "personalities" ADD CONSTRAINT "personalities_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE "personalities" ADD CONSTRAINT "personalities_llm_provider_instance_id_fkey" FOREIGN KEY ("llm_provider_instance_id") REFERENCES "llm_provider_instances"("id") ON DELETE SET NULL ON UPDATE CASCADE; + -- CreateTable CREATE TABLE "cron_schedules" ( "id" UUID NOT NULL, diff --git a/apps/api/prisma/migrations/20260215100000_fix_schema_drift/migration.sql b/apps/api/prisma/migrations/20260215100000_fix_schema_drift/migration.sql new file mode 100644 index 0000000..bf82b50 --- /dev/null +++ b/apps/api/prisma/migrations/20260215100000_fix_schema_drift/migration.sql @@ -0,0 +1,49 @@ +-- Fix schema drift: tables, indexes, and constraints defined in schema.prisma +-- but never created (or dropped and never recreated) by prior migrations. + +-- ============================================ +-- CreateTable: instances (Federation module) +-- Never created in any prior migration +-- ============================================ +CREATE TABLE "instances" ( + "id" UUID NOT NULL, + "instance_id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "url" TEXT NOT NULL, + "public_key" TEXT NOT NULL, + "private_key" TEXT NOT NULL, + "capabilities" JSONB NOT NULL DEFAULT '{}', + "metadata" JSONB NOT NULL DEFAULT '{}', + "created_at" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMPTZ NOT NULL, + + CONSTRAINT "instances_pkey" PRIMARY KEY ("id") +); + +CREATE UNIQUE INDEX "instances_instance_id_key" ON "instances"("instance_id"); + +-- ============================================ +-- Recreate dropped unique index on knowledge_links +-- Created in 20260129220645_add_knowledge_module, dropped in +-- 20260129235248_add_link_storage_fields, never recreated. +-- ============================================ +CREATE UNIQUE INDEX "knowledge_links_source_id_target_id_key" ON "knowledge_links"("source_id", "target_id"); + +-- ============================================ +-- Missing @@unique([id, workspaceId]) composite indexes +-- Defined in schema.prisma but never created in migrations. +-- (agent_tasks and runner_jobs already have these.) +-- ============================================ +CREATE UNIQUE INDEX "tasks_id_workspace_id_key" ON "tasks"("id", "workspace_id"); +CREATE UNIQUE INDEX "events_id_workspace_id_key" ON "events"("id", "workspace_id"); +CREATE UNIQUE INDEX "projects_id_workspace_id_key" ON "projects"("id", "workspace_id"); +CREATE UNIQUE INDEX "activity_logs_id_workspace_id_key" ON "activity_logs"("id", "workspace_id"); +CREATE UNIQUE INDEX "domains_id_workspace_id_key" ON "domains"("id", "workspace_id"); +CREATE UNIQUE INDEX "ideas_id_workspace_id_key" ON "ideas"("id", "workspace_id"); +CREATE UNIQUE INDEX "user_layouts_id_workspace_id_key" ON "user_layouts"("id", "workspace_id"); + +-- ============================================ +-- Missing index on agent_tasks.agent_type +-- Defined as @@index([agentType]) in schema.prisma +-- ============================================ +CREATE INDEX "agent_tasks_agent_type_idx" ON "agent_tasks"("agent_type");