diff --git a/.server-changes/faster-schedule-validation-lookup.md b/.server-changes/faster-schedule-validation-lookup.md new file mode 100644 index 00000000000..db83ef6b009 --- /dev/null +++ b/.server-changes/faster-schedule-validation-lookup.md @@ -0,0 +1,6 @@ +--- +area: webapp +type: improvement +--- + +Creating or updating a schedule, and deploying a project with declarative schedules, is faster in long-lived projects with many deploys. diff --git a/apps/webapp/app/v3/services/checkSchedule.server.ts b/apps/webapp/app/v3/services/checkSchedule.server.ts index beb5de4b596..0115c742069 100644 --- a/apps/webapp/app/v3/services/checkSchedule.server.ts +++ b/apps/webapp/app/v3/services/checkSchedule.server.ts @@ -45,6 +45,9 @@ export class CheckScheduleService extends BaseService { slug: schedule.taskIdentifier, projectId: projectId, }, + select: { + triggerSource: true, + }, orderBy: { createdAt: "desc", }, diff --git a/internal-packages/database/prisma/migrations/20260806100000_add_background_worker_task_project_id_slug_created_at_index/migration.sql b/internal-packages/database/prisma/migrations/20260806100000_add_background_worker_task_project_id_slug_created_at_index/migration.sql new file mode 100644 index 00000000000..af9400ac60b --- /dev/null +++ b/internal-packages/database/prisma/migrations/20260806100000_add_background_worker_task_project_id_slug_created_at_index/migration.sql @@ -0,0 +1 @@ +CREATE INDEX CONCURRENTLY IF NOT EXISTS "BackgroundWorkerTask_projectId_slug_createdAt_idx" ON "public"."BackgroundWorkerTask"("projectId", "slug", "createdAt"); diff --git a/internal-packages/database/prisma/schema.prisma b/internal-packages/database/prisma/schema.prisma index ca1d868ab04..8ea3ea2fc3a 100644 --- a/internal-packages/database/prisma/schema.prisma +++ b/internal-packages/database/prisma/schema.prisma @@ -752,6 +752,7 @@ model BackgroundWorkerTask { @@unique([workerId, slug]) // Quick lookup of task identifiers @@index([projectId, slug]) + @@index([projectId, slug, createdAt]) @@index([runtimeEnvironmentId, projectId]) @@index([runtimeEnvironmentId, slug, triggerSource]) }