diff --git a/packages/store-api/src/index.ts b/packages/store-api/src/index.ts index d8e40b93ff..746c6de2c7 100644 --- a/packages/store-api/src/index.ts +++ b/packages/store-api/src/index.ts @@ -1,19 +1,28 @@ import { makeExecutableSchema } from '@graphql-tools/schema' -import { getResolvers as getResolversVTEX } from './platforms/vtex' +import { + getContextFactory as getContextFactoryVTEX, + getResolvers as getResolversVTEX, +} from './platforms/vtex' import { typeDefs } from './typeDefs' import type { Options as OptionsVTEX } from './platforms/vtex' export type Options = OptionsVTEX -const getResolversByPlatform = { - vtex: getResolversVTEX, +const platforms = { + vtex: { + getResolvers: getResolversVTEX, + getContextFactory: getContextFactoryVTEX, + }, } export const getTypeDefs = () => typeDefs export const getResolvers = (options: Options) => - getResolversByPlatform[options.platform](options) + platforms[options.platform].getResolvers(options) + +export const getContextFactory = (options: Options) => + platforms[options.platform].getContextFactory(options) export const getSchema = async (options: Options) => makeExecutableSchema({ diff --git a/packages/store-api/src/platforms/vtex/index.ts b/packages/store-api/src/platforms/vtex/index.ts index b7600aa252..d2642076ec 100644 --- a/packages/store-api/src/platforms/vtex/index.ts +++ b/packages/store-api/src/platforms/vtex/index.ts @@ -45,17 +45,8 @@ const Resolvers = { Query, } -const Wrap = (resolvers: Record, options: Options) => - Object.keys(resolvers).reduce((acc, key) => { - acc[key] = (root, args, ctx, info) => - resolvers[key](root, args, { ...ctx, clients: getClients(options) }, info) - - return acc - }, {} as Record) - -export const getResolvers = (options: Options) => - Object.keys(Resolvers).reduce((acc, key) => { - acc[key] = Wrap((Resolvers as any)[key], options) +export const getContextFactory = (options: Options) => (ctx: any) => { + ctx.clients = getClients(options) +} - return acc - }, {} as Record>) +export const getResolvers = (_: Options) => Resolvers