feature(queue): use postgres instead of redis for buffer
* wip(buffer): initial implementation of psql buffer * wip(buffer): add both profile and bots buffer
This commit is contained in:
committed by
Carl-Gerhard Lindesvärd
parent
2b5b8ce446
commit
71bf22af51
@@ -0,0 +1,24 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "event_buffer" (
|
||||
"id" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
"eventId" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"profileId" TEXT,
|
||||
"sessionId" TEXT,
|
||||
"payload" JSONB NOT NULL,
|
||||
"processedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "event_buffer_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "event_buffer_eventId_key" ON "event_buffer"("eventId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "event_buffer_projectId_processedAt_createdAt_idx" ON "event_buffer"("projectId", "processedAt", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "event_buffer_projectId_profileId_sessionId_createdAt_idx" ON "event_buffer"("projectId", "profileId", "sessionId", "createdAt");
|
||||
@@ -0,0 +1,22 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "profile_buffer" (
|
||||
"id" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
"profileId" TEXT NOT NULL,
|
||||
"checksum" TEXT NOT NULL,
|
||||
"payload" JSONB NOT NULL,
|
||||
"processedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "profile_buffer_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "profile_buffer_projectId_profileId_idx" ON "profile_buffer"("projectId", "profileId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "profile_buffer_projectId_processedAt_idx" ON "profile_buffer"("projectId", "processedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "profile_buffer_checksum_idx" ON "profile_buffer"("checksum");
|
||||
@@ -0,0 +1,17 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "bot_event_buffer" (
|
||||
"id" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
"eventId" TEXT NOT NULL,
|
||||
"payload" JSONB NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"processedAt" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "bot_event_buffer_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "bot_event_buffer_processedAt_idx" ON "bot_event_buffer"("processedAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "bot_event_buffer_projectId_eventId_idx" ON "bot_event_buffer"("projectId", "eventId");
|
||||
@@ -443,3 +443,52 @@ model ResetPassword {
|
||||
|
||||
@@map("reset_password")
|
||||
}
|
||||
|
||||
model EventBuffer {
|
||||
id String @id @default(cuid())
|
||||
projectId String
|
||||
eventId String @unique
|
||||
name String
|
||||
profileId String?
|
||||
sessionId String?
|
||||
/// [IPrismaClickhouseEvent]
|
||||
payload Json
|
||||
processedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
|
||||
@@index([projectId, processedAt, createdAt])
|
||||
@@index([projectId, profileId, sessionId, createdAt])
|
||||
@@map("event_buffer")
|
||||
}
|
||||
|
||||
model ProfileBuffer {
|
||||
id String @id @default(cuid())
|
||||
projectId String
|
||||
profileId String
|
||||
checksum String
|
||||
/// [IPrismaClickhouseProfile]
|
||||
payload Json
|
||||
processedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
|
||||
@@index([projectId, profileId])
|
||||
@@index([projectId, processedAt])
|
||||
@@index([checksum])
|
||||
@@map("profile_buffer")
|
||||
}
|
||||
|
||||
model BotEventBuffer {
|
||||
id String @id @default(cuid())
|
||||
projectId String
|
||||
eventId String
|
||||
/// [IPrismaClickhouseBotEvent]
|
||||
payload Json
|
||||
createdAt DateTime @default(now())
|
||||
processedAt DateTime?
|
||||
|
||||
@@index([processedAt])
|
||||
@@index([projectId, eventId])
|
||||
@@map("bot_event_buffer")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user