diff --git a/apps/api/src/proxy/proxy.controller.ts b/apps/api/src/proxy/proxy.controller.ts index 4e04bec..49e11c6 100644 --- a/apps/api/src/proxy/proxy.controller.ts +++ b/apps/api/src/proxy/proxy.controller.ts @@ -1,5 +1,5 @@ import { queryTTL } from './lib/config'; -import type { GQLRequest } from './types'; +import type { GQLRequest, GQLResponse } from './types'; import { CACHE_MANAGER } from '@nestjs/cache-manager'; import { All, @@ -42,13 +42,14 @@ export class ProxyController { method: req.method, }); - if (!response.ok) + const data = (await response.json()) as GQLResponse; + + if (!response.ok || data?.error || data?.errors?.length) throw new HttpException( response.statusText, response.status || HttpStatus.INTERNAL_SERVER_ERROR, ); - const data = await response.json(); const ttl = queryTTL[operationName]; if (data && ttl !== false) await this.cacheManager.set(key, data, { ttl: ttl || env.CACHE_TTL }); diff --git a/apps/api/src/proxy/types.ts b/apps/api/src/proxy/types.ts index bde0d91..37377bf 100644 --- a/apps/api/src/proxy/types.ts +++ b/apps/api/src/proxy/types.ts @@ -3,3 +3,9 @@ export type GQLRequest = { query: string; variables: string; }; + +export type GQLResponse = { + data: unknown; + error?: unknown; + errors?: unknown[]; +};