import "server-only" import { request } from "./request" import type { BatchRequestDocument } from "graphql-request" import type { Data } from "@/types/request" export async function batchRequest( queries: (BatchRequestDocument & NextFetchRequestConfig)[] ): Promise> { try { const response = await Promise.allSettled( queries.map((query) => request(query.document, query.variables, { tags: query.tags }) ) ) let data = {} as T const reasons = [] response.forEach((res) => { if (res.status === "fulfilled") { data = Object.assign({}, data, res.value.data) } else { reasons.push(res.reason) } }) return { data } } catch (error) { console.error("Error in batched graphql request") console.error(error) throw new Error("Something went wrong") } }