From b8425d10c2bffa893e793000c0de035ea3a10525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Thu, 2 Jan 2025 14:50:20 +0100 Subject: [PATCH] perf: optimize builds query --- apps/backend/src/graphql/definitions/Project.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/graphql/definitions/Project.ts b/apps/backend/src/graphql/definitions/Project.ts index f9cde911b..4e78a68f9 100644 --- a/apps/backend/src/graphql/definitions/Project.ts +++ b/apps/backend/src/graphql/definitions/Project.ts @@ -2,7 +2,7 @@ import { assertNever } from "@argos/util/assertNever"; import { invariant } from "@argos/util/invariant"; import * as Sentry from "@sentry/node"; import gqlTag from "graphql-tag"; -import type { PartialModelObject } from "objection"; +import { raw, type PartialModelObject } from "objection"; import { Account, @@ -516,6 +516,7 @@ export const resolvers: IResolvers = { if (!status.includes(IBuildStatus.Accepted)) { qb.whereNotExists( ScreenshotDiff.query() + .select(raw("1")) .whereRaw('screenshot_diffs."buildId" = builds.id') .where("validationStatus", "accepted"), ); @@ -524,6 +525,7 @@ export const resolvers: IResolvers = { if (!status.includes(IBuildStatus.Rejected)) { qb.whereNotExists( ScreenshotDiff.query() + .select(raw("1")) .whereRaw('screenshot_diffs."buildId" = builds.id') .where("validationStatus", "rejected"), ); @@ -535,6 +537,7 @@ export const resolvers: IResolvers = { .orWhereNull("conclusion") .orWhereExists( ScreenshotDiff.query() + .select(raw("1")) .whereRaw('screenshot_diffs."buildId" = builds.id') .whereIn("validationStatus", ["rejected", "accepted"]), ); @@ -547,6 +550,7 @@ export const resolvers: IResolvers = { .orWhereNull("conclusion") .orWhereExists( ScreenshotDiff.query() + .select(raw("1")) .whereRaw('screenshot_diffs."buildId" = builds.id') .whereIn("validationStatus", ["rejected", "accepted"]), );