From 2cd108c3eecec178f47525d77f6c644e03289564 Mon Sep 17 00:00:00 2001 From: Daniel Gak Anagrov Date: Mon, 16 Jun 2025 08:57:08 +0200 Subject: [PATCH] feat(objects): Improve gql loading logic around limits (#4885) --- .../modules/core/graph/resolvers/versions.ts | 37 +++---------------- 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/packages/server/modules/core/graph/resolvers/versions.ts b/packages/server/modules/core/graph/resolvers/versions.ts index ef313d7b0..9b1e09117 100644 --- a/packages/server/modules/core/graph/resolvers/versions.ts +++ b/packages/server/modules/core/graph/resolvers/versions.ts @@ -50,25 +50,9 @@ import { StreamNotFoundError } from '@/modules/core/errors/stream' import { throwIfResourceAccessNotAllowed } from '@/modules/core/helpers/token' import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { throwIfAuthNotOk } from '@/modules/shared/helpers/errorHelper' -import { Version } from '@/modules/core/domain/commits/types' -import { GraphQLResolveInfo } from 'graphql' import { withOperationLogging } from '@/observability/domain/businessLogging' import { isCreatedBeyondHistoryLimitCutoffFactory } from '@/modules/gatekeeperCore/utils/limits' -/** - * Simple utility to check if version is inside a Model or a Project - */ -const getTypeFromPath = (info: GraphQLResolveInfo): 'Model' | 'Project' | null => { - let currentPath = info.path - while (currentPath) { - if (currentPath.typename === 'Model' || currentPath.typename === 'Project') { - return currentPath.typename - } - currentPath = currentPath.prev! - } - return null -} - const throwIfRateLimited = throwIfRateLimitedFactory({ rateLimiterEnabled: isRateLimiterEnabled() }) @@ -116,7 +100,7 @@ export = { const path = `/preview/${stream.id}/commits/${parent.id}` return new URL(path, getServerOrigin()).toString() }, - referencedObject: async (parent, _args, ctx, info) => { + referencedObject: async (parent, _args, ctx) => { const projectDB = await getProjectDbClient({ projectId: parent.streamId }) const project = await ctx.loaders .forRegion({ db: projectDB }) @@ -134,22 +118,11 @@ export = { project }) - let latestVersion: Version | null = null - let latestVersions: Array | null = null - if (getTypeFromPath(info) === 'Model') { - latestVersion = await ctx.loaders - .forRegion({ db: projectDB }) - .branches.getLatestCommit.load(parent.branchId) - } else { - latestVersions = await ctx.loaders - .forRegion({ db: projectDB }) - .streams.getLatestVersions.load(parent.streamId) - } + const latestVersions = await ctx.loaders + .forRegion({ db: projectDB }) + .streams.getLatestVersions.load(parent.streamId) - if ( - latestVersion?.id === parent.id || - latestVersions?.find((lv) => lv.id === parent.id) - ) + if (latestVersions?.find((lv) => lv.id === parent.id)) return parent.referencedObject if (isBeyondLimit) return null return parent.referencedObject