Update migration to include GIN indexes
This commit is contained in:
+12
@@ -351,6 +351,9 @@ CREATE INDEX "contacts_projectId_idx" ON "contacts"("projectId");
|
||||
-- CreateIndex
|
||||
CREATE INDEX "contacts_projectId_subscribed_idx" ON "contacts"("projectId", "subscribed");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "contacts_data_idx" ON "contacts" USING GIN ("data" jsonb_ops);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "contacts_projectId_email_key" ON "contacts"("projectId", "email");
|
||||
|
||||
@@ -363,6 +366,9 @@ CREATE INDEX "templates_projectId_type_idx" ON "templates"("projectId", "type");
|
||||
-- CreateIndex
|
||||
CREATE INDEX "segments_projectId_idx" ON "segments"("projectId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "segments_condition_idx" ON "segments" USING GIN ("condition" jsonb_ops);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "segment_memberships_segmentId_exitedAt_idx" ON "segment_memberships"("segmentId", "exitedAt");
|
||||
|
||||
@@ -381,6 +387,9 @@ CREATE INDEX "campaigns_scheduledFor_idx" ON "campaigns"("scheduledFor");
|
||||
-- CreateIndex
|
||||
CREATE INDEX "campaigns_segmentId_idx" ON "campaigns"("segmentId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "campaigns_audienceCondition_idx" ON "campaigns" USING GIN ("audienceCondition" jsonb_ops);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "workflows_projectId_idx" ON "workflows"("projectId");
|
||||
|
||||
@@ -480,6 +489,9 @@ CREATE INDEX "events_projectId_contactId_name_createdAt_idx" ON "events"("projec
|
||||
-- CreateIndex
|
||||
CREATE INDEX "events_contactId_name_createdAt_idx" ON "events"("contactId", "name", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "events_data_idx" ON "events" USING GIN ("data" jsonb_ops);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "api_requests_projectId_createdAt_idx" ON "api_requests"("projectId", "createdAt" DESC);
|
||||
|
||||
@@ -146,6 +146,7 @@ model Contact {
|
||||
@@unique([projectId, email])
|
||||
@@index([projectId])
|
||||
@@index([projectId, subscribed])
|
||||
@@index([data(ops: JsonbOps)], type: Gin) // GIN index for fast JSON queries on Contact.data
|
||||
@@map("contacts")
|
||||
}
|
||||
|
||||
@@ -236,6 +237,7 @@ model Segment {
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([projectId])
|
||||
@@index([condition(ops: JsonbOps)], type: Gin) // GIN index for segment condition queries
|
||||
@@map("segments")
|
||||
}
|
||||
|
||||
@@ -313,6 +315,7 @@ model Campaign {
|
||||
@@index([projectId, status])
|
||||
@@index([scheduledFor])
|
||||
@@index([segmentId])
|
||||
@@index([audienceCondition(ops: JsonbOps)], type: Gin) // GIN index for campaign audience condition queries
|
||||
@@map("campaigns")
|
||||
}
|
||||
|
||||
@@ -608,6 +611,7 @@ model Event {
|
||||
@@index([createdAt])
|
||||
@@index([projectId, contactId, name, createdAt]) // For event-based segment queries (fast!)
|
||||
@@index([contactId, name, createdAt]) // For per-contact event lookups
|
||||
@@index([data(ops: JsonbOps)], type: Gin) // GIN index for event data queries
|
||||
@@map("events")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user