Skip to content

Commit 2634095

Browse files
committed
Remove progress from events migration
1 parent 6d60821 commit 2634095

3 files changed

Lines changed: 14 additions & 34 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- SPLIT_STATEMENT_SENTINEL
2+
-- SINGLE_STATEMENT_SENTINEL
3+
-- RUN_OUTSIDE_TRANSACTION_SENTINEL
4+
-- Add index on createdAt for efficient range queries (used by ClickHouse migration and similar count queries).
5+
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_event_created_at ON "Event" ("createdAt");
6+
7+
-- SPLIT_STATEMENT_SENTINEL
8+
-- SINGLE_STATEMENT_SENTINEL
9+
-- RUN_OUTSIDE_TRANSACTION_SENTINEL
10+
-- Add composite index (createdAt, id) for cursor-based pagination queries.
11+
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_event_created_at_id ON "Event" ("createdAt", "id");

apps/backend/prisma/schema.prisma

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,8 @@ model Event {
659659
// =============================== END END USER PROPERTIES ===============================
660660
661661
@@index([data(ops: JsonbPathOps)], type: Gin)
662+
@@index([createdAt])
663+
@@index([createdAt, id])
662664
}
663665

664666
// An IP address that was seen in an event. Use the location fields instead of refetching the location from the ip, as the real-world geoip data may have changed since the event was logged.

apps/backend/src/app/api/latest/internal/clickhouse/migrate-events/route.tsx

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
import type { Prisma } from "@/generated/prisma/client";
12
import { getClickhouseAdminClient, isClickhouseConfigured } from "@/lib/clickhouse";
23
import { DEFAULT_BRANCH_ID } from "@/lib/tenancies";
34
import { globalPrismaClient } from "@/prisma-client";
45
import { createSmartRouteHandler } from "@/route-handlers/smart-route-handler";
56
import { yupNumber, yupObject, yupString } from "@stackframe/stack-shared/dist/schema-fields";
67
import { StatusError } from "@stackframe/stack-shared/dist/utils/errors";
7-
import type { Prisma } from "@/generated/prisma/client";
88

99
type Cursor = {
1010
created_at_millis: number,
@@ -88,13 +88,8 @@ export const POST = createSmartRouteHandler({
8888
statusCode: yupNumber().oneOf([200]).defined(),
8989
bodyType: yupString().oneOf(["json"]).defined(),
9090
body: yupObject({
91-
total_events: yupNumber().defined(),
92-
processed_events: yupNumber().defined(),
93-
remaining_events: yupNumber().defined(),
9491
migrated_events: yupNumber().defined(),
95-
skipped_existing_events: yupNumber().defined(),
9692
inserted_rows: yupNumber().defined(),
97-
progress: yupNumber().min(0).max(1).defined(),
9893
next_cursor: yupObject({
9994
created_at_millis: yupNumber().integer().defined(),
10095
id: yupString().defined(),
@@ -129,8 +124,6 @@ export const POST = createSmartRouteHandler({
129124
? { AND: [baseWhere, cursorFilter] }
130125
: baseWhere;
131126

132-
const totalEvents = await globalPrismaClient.event.count({ where: baseWhere });
133-
134127
const events = await globalPrismaClient.event.findMany({
135128
where,
136129
orderBy: [
@@ -171,39 +164,13 @@ export const POST = createSmartRouteHandler({
171164
created_at_millis: lastEvent.createdAt.getTime(),
172165
id: lastEvent.id,
173166
} : null;
174-
const progressCursor: Cursor | null = nextCursor ?? (cursorCreatedAt && body.cursor ? {
175-
created_at_millis: body.cursor.created_at_millis,
176-
id: body.cursor.id,
177-
} : null);
178-
179-
const progressCursorCreatedAt = progressCursor ? new Date(progressCursor.created_at_millis) : null;
180-
const remainingWhere = progressCursor ? {
181-
AND: [
182-
baseWhere,
183-
{
184-
OR: [
185-
{ createdAt: { gt: progressCursorCreatedAt! } },
186-
{ createdAt: progressCursorCreatedAt!, id: { gt: progressCursor.id } },
187-
],
188-
},
189-
],
190-
} : baseWhere;
191-
192-
const remainingEvents = await globalPrismaClient.event.count({ where: remainingWhere });
193-
const processedEvents = totalEvents - remainingEvents;
194-
const progress = totalEvents === 0 ? 1 : processedEvents / totalEvents;
195167

196168
return {
197169
statusCode: 200,
198170
bodyType: "json",
199171
body: {
200-
total_events: totalEvents,
201-
processed_events: processedEvents,
202-
remaining_events: remainingEvents,
203172
migrated_events: migratedEvents,
204-
skipped_existing_events: 0,
205173
inserted_rows: insertedRows,
206-
progress,
207174
next_cursor: nextCursor,
208175
},
209176
};

0 commit comments

Comments
 (0)