migration.sql 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. -- CreateTable
  2. CREATE TABLE "integration_connections" (
  3. "id" TEXT NOT NULL,
  4. "organizationId" TEXT NOT NULL,
  5. "connectorId" TEXT NOT NULL,
  6. "status" TEXT NOT NULL DEFAULT 'pending',
  7. "label" TEXT,
  8. "credentials" TEXT,
  9. "settings" JSONB NOT NULL DEFAULT '{}',
  10. "state" JSONB NOT NULL DEFAULT '{}',
  11. "externalAccountId" TEXT,
  12. "externalAccountName" TEXT,
  13. "scopes" TEXT,
  14. "oauthState" TEXT,
  15. "lastHealthAt" TIMESTAMP(3),
  16. "lastSyncAt" TIMESTAMP(3),
  17. "lastError" TEXT,
  18. "createdById" TEXT NOT NULL,
  19. "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  20. "updatedAt" TIMESTAMP(3) NOT NULL,
  21. CONSTRAINT "integration_connections_pkey" PRIMARY KEY ("id")
  22. );
  23. -- CreateTable
  24. CREATE TABLE "integration_links" (
  25. "id" TEXT NOT NULL,
  26. "connectionId" TEXT NOT NULL,
  27. "entityType" TEXT NOT NULL,
  28. "entityId" TEXT NOT NULL,
  29. "remoteId" TEXT NOT NULL,
  30. "remoteUrl" TEXT,
  31. "metadata" JSONB,
  32. "checksum" TEXT,
  33. "remoteUpdatedAt" TIMESTAMP(3),
  34. "lastSyncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  35. "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  36. CONSTRAINT "integration_links_pkey" PRIMARY KEY ("id")
  37. );
  38. -- CreateTable
  39. CREATE TABLE "integration_jobs" (
  40. "id" TEXT NOT NULL,
  41. "connectionId" TEXT NOT NULL,
  42. "organizationId" TEXT NOT NULL,
  43. "kind" TEXT NOT NULL,
  44. "payload" JSONB,
  45. "idempotencyKey" TEXT,
  46. "status" TEXT NOT NULL DEFAULT 'queued',
  47. "attempts" INTEGER NOT NULL DEFAULT 0,
  48. "maxAttempts" INTEGER NOT NULL DEFAULT 5,
  49. "runAfter" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  50. "lockedAt" TIMESTAMP(3),
  51. "startedAt" TIMESTAMP(3),
  52. "finishedAt" TIMESTAMP(3),
  53. "error" TEXT,
  54. "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  55. "updatedAt" TIMESTAMP(3) NOT NULL,
  56. CONSTRAINT "integration_jobs_pkey" PRIMARY KEY ("id")
  57. );
  58. -- CreateTable
  59. CREATE TABLE "integration_logs" (
  60. "id" TEXT NOT NULL,
  61. "connectionId" TEXT NOT NULL,
  62. "jobId" TEXT,
  63. "level" TEXT NOT NULL DEFAULT 'info',
  64. "message" TEXT NOT NULL,
  65. "details" JSONB,
  66. "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  67. CONSTRAINT "integration_logs_pkey" PRIMARY KEY ("id")
  68. );
  69. -- CreateTable
  70. CREATE TABLE "external_calendar_events" (
  71. "id" TEXT NOT NULL,
  72. "connectionId" TEXT NOT NULL,
  73. "organizationId" TEXT NOT NULL,
  74. "remoteId" TEXT NOT NULL,
  75. "calendarId" TEXT NOT NULL,
  76. "title" TEXT NOT NULL,
  77. "startAt" TIMESTAMP(3) NOT NULL,
  78. "endAt" TIMESTAMP(3) NOT NULL,
  79. "allDay" BOOLEAN NOT NULL DEFAULT false,
  80. "remoteUpdatedAt" TIMESTAMP(3),
  81. "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  82. "updatedAt" TIMESTAMP(3) NOT NULL,
  83. CONSTRAINT "external_calendar_events_pkey" PRIMARY KEY ("id")
  84. );
  85. -- CreateIndex
  86. CREATE UNIQUE INDEX "integration_connections_oauthState_key" ON "integration_connections"("oauthState");
  87. -- CreateIndex
  88. CREATE INDEX "integration_connections_organizationId_idx" ON "integration_connections"("organizationId");
  89. -- CreateIndex
  90. CREATE UNIQUE INDEX "integration_connections_organizationId_connectorId_key" ON "integration_connections"("organizationId", "connectorId");
  91. -- CreateIndex
  92. CREATE INDEX "integration_links_connectionId_remoteId_idx" ON "integration_links"("connectionId", "remoteId");
  93. -- CreateIndex
  94. CREATE INDEX "integration_links_entityType_entityId_idx" ON "integration_links"("entityType", "entityId");
  95. -- CreateIndex
  96. CREATE UNIQUE INDEX "integration_links_connectionId_entityType_entityId_key" ON "integration_links"("connectionId", "entityType", "entityId");
  97. -- CreateIndex
  98. CREATE INDEX "integration_jobs_status_runAfter_idx" ON "integration_jobs"("status", "runAfter");
  99. -- CreateIndex
  100. CREATE INDEX "integration_jobs_connectionId_createdAt_idx" ON "integration_jobs"("connectionId", "createdAt");
  101. -- CreateIndex
  102. CREATE INDEX "integration_jobs_organizationId_createdAt_idx" ON "integration_jobs"("organizationId", "createdAt");
  103. -- CreateIndex
  104. CREATE UNIQUE INDEX "integration_jobs_connectionId_idempotencyKey_key" ON "integration_jobs"("connectionId", "idempotencyKey");
  105. -- CreateIndex
  106. CREATE INDEX "integration_logs_connectionId_createdAt_idx" ON "integration_logs"("connectionId", "createdAt");
  107. -- CreateIndex
  108. CREATE INDEX "external_calendar_events_organizationId_startAt_idx" ON "external_calendar_events"("organizationId", "startAt");
  109. -- CreateIndex
  110. CREATE UNIQUE INDEX "external_calendar_events_connectionId_remoteId_key" ON "external_calendar_events"("connectionId", "remoteId");
  111. -- AddForeignKey
  112. ALTER TABLE "integration_connections" ADD CONSTRAINT "integration_connections_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "organizations"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  113. -- AddForeignKey
  114. ALTER TABLE "integration_links" ADD CONSTRAINT "integration_links_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "integration_connections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  115. -- AddForeignKey
  116. ALTER TABLE "integration_jobs" ADD CONSTRAINT "integration_jobs_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "integration_connections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  117. -- AddForeignKey
  118. ALTER TABLE "integration_logs" ADD CONSTRAINT "integration_logs_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "integration_connections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  119. -- AddForeignKey
  120. ALTER TABLE "external_calendar_events" ADD CONSTRAINT "external_calendar_events_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "integration_connections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
  121. -- AddForeignKey
  122. ALTER TABLE "external_calendar_events" ADD CONSTRAINT "external_calendar_events_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "organizations"("id") ON DELETE CASCADE ON UPDATE CASCADE;