fix(planner): add index on sessions.last_activity for the expire job

The hourly `expireSessions()` cron runs `DELETE FROM planner.sessions
WHERE last_activity < cutoff`. Without an index on `last_activity`,
that's a full table scan growing linearly with the total sessions
ever created (planner sessions are never user-deleted; expiry is the
only churn path).

`drizzle-kit push` picks this up on next deploy.
This commit is contained in:
Ullrich Schäfer 2026-05-25 23:59:10 +02:00
parent d07207464e
commit d2b28a1164
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9

View file

@ -1,4 +1,4 @@
import { pgSchema, text, timestamp, boolean, customType } from "drizzle-orm/pg-core";
import { pgSchema, text, timestamp, boolean, customType, index } from "drizzle-orm/pg-core";
const bytea = customType<{ data: Buffer }>({
dataType() {
@ -16,4 +16,9 @@ export const sessions = plannerSchema.table("sessions", {
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
lastActivity: timestamp("last_activity", { withTimezone: true }).notNull().defaultNow(),
closed: boolean("closed").notNull().default(false),
});
}, (t) => ({
// Hourly `expireSessions()` job runs `DELETE WHERE last_activity < cutoff`.
// Without this index it's a full table scan that grows linearly with
// total sessions ever created.
lastActivityIdx: index("sessions_last_activity_idx").on(t.lastActivity),
}));