From a9ff32418e4be194a76a91a195c782f7ae98e28f Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Tue, 30 Jan 2024 17:35:04 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20for=20when=20there=20are=20no=20jobs?= =?UTF-8?q?=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/presenters/JobListPresenter.server.ts | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/apps/webapp/app/presenters/JobListPresenter.server.ts b/apps/webapp/app/presenters/JobListPresenter.server.ts index f9702e5f3..e6c615282 100644 --- a/apps/webapp/app/presenters/JobListPresenter.server.ts +++ b/apps/webapp/app/presenters/JobListPresenter.server.ts @@ -98,27 +98,36 @@ export class JobListPresenter { orderBy: [{ title: "asc" }], }); - const latestRuns = await this.#prismaClient.$queryRaw< - { - createdAt: Date; - status: JobRunStatus; - jobId: string; - rn: BigInt; - }[] - >` - SELECT * FROM ( - SELECT - "id", - "createdAt", - "status", - "jobId", - ROW_NUMBER() OVER(PARTITION BY "jobId" ORDER BY "createdAt" DESC) as rn - FROM - "public"."JobRun" - WHERE - "jobId" IN (${Prisma.join(jobs.map((j) => j.id))}) - ) t - WHERE rn = 1;`; + let latestRuns = [] as { + createdAt: Date; + status: JobRunStatus; + jobId: string; + rn: BigInt; + }[]; + + if (jobs.length > 0) { + latestRuns = await this.#prismaClient.$queryRaw< + { + createdAt: Date; + status: JobRunStatus; + jobId: string; + rn: BigInt; + }[] + >` + SELECT * FROM ( + SELECT + "id", + "createdAt", + "status", + "jobId", + ROW_NUMBER() OVER(PARTITION BY "jobId" ORDER BY "createdAt" DESC) as rn + FROM + "public"."JobRun" + WHERE + "jobId" IN (${Prisma.join(jobs.map((j) => j.id))}) + ) t + WHERE rn = 1;`; + } return jobs .flatMap((job) => {