From 03493b0d3f60bf10d755a5226d8b5c75b3ae1f3d Mon Sep 17 00:00:00 2001 From: Aditya Choudhari Date: Mon, 18 May 2026 11:38:23 -0400 Subject: [PATCH] fix: fetch newest workflow runs in ui query --- packages/trpc/src/routes/workflows.ts | 28 +++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/packages/trpc/src/routes/workflows.ts b/packages/trpc/src/routes/workflows.ts index ff2553379..a365eb6a6 100644 --- a/packages/trpc/src/routes/workflows.ts +++ b/packages/trpc/src/routes/workflows.ts @@ -157,11 +157,26 @@ export const workflowsRouter = router({ z.object({ workspaceId: z.uuid(), workflowId: z.string().uuid(), - limit: z.number().min(1).max(1000).default(100), + limit: z.number().min(1).max(1000).default(500), offset: z.number().min(0).default(0), }), ) .query(async ({ ctx, input }) => { + const newestRunIds = ctx.db + .select({ id: schema.workflowRun.id }) + .from(schema.workflowRun) + .leftJoin( + schema.workflowJob, + eq(schema.workflowJob.workflowRunId, schema.workflowRun.id), + ) + .leftJoin(schema.job, eq(schema.job.id, schema.workflowJob.jobId)) + .where(eq(schema.workflowRun.workflowId, input.workflowId)) + .groupBy(schema.workflowRun.id) + .orderBy(sql`min(${schema.job.createdAt}) desc nulls last`) + .limit(input.limit) + .offset(input.offset) + .as("newest_runs"); + const rows = await ctx.db .select({ runId: schema.workflowRun.id, @@ -170,15 +185,16 @@ export const workflowsRouter = router({ jobStatus: schema.job.status, jobCreatedAt: schema.job.createdAt, }) - .from(schema.workflowRun) + .from(newestRunIds) + .innerJoin( + schema.workflowRun, + eq(schema.workflowRun.id, newestRunIds.id), + ) .leftJoin( schema.workflowJob, eq(schema.workflowJob.workflowRunId, schema.workflowRun.id), ) - .leftJoin(schema.job, eq(schema.job.id, schema.workflowJob.jobId)) - .where(eq(schema.workflowRun.workflowId, input.workflowId)) - .limit(input.limit) - .offset(input.offset); + .leftJoin(schema.job, eq(schema.job.id, schema.workflowJob.jobId)); return _.chain(rows) .groupBy("runId")