From 8cfd347a48c8fc9897109564f23e8ea769737328 Mon Sep 17 00:00:00 2001 From: Matthew Cantelon Date: Thu, 10 Jun 2021 07:02:04 -0700 Subject: [PATCH] fix: create clients once Suggestion from @dan13ram on PR to cache the clients and avoid recreating on every request. --- .../resolvers/daohaus/resolver.ts | 4 ++-- packages/backend/src/lib/daoHausClient.ts | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/backend/src/handlers/remote-schemas/resolvers/daohaus/resolver.ts b/packages/backend/src/handlers/remote-schemas/resolvers/daohaus/resolver.ts index 32f20768..f45d3f95 100644 --- a/packages/backend/src/handlers/remote-schemas/resolvers/daohaus/resolver.ts +++ b/packages/backend/src/handlers/remote-schemas/resolvers/daohaus/resolver.ts @@ -1,8 +1,8 @@ -import { clientFactory } from '../../../../lib/daoHausClient'; +import { getClient } from '../../../../lib/daoHausClient'; import { Member, QueryResolvers } from '../../autogen/types'; const addChain = (memberAddress: string) => async (chain: string) => { - const client = clientFactory(chain); + const client = getClient(chain); const members = ( (await client.GetDaoHausMemberships({ memberAddress })).members ); diff --git a/packages/backend/src/lib/daoHausClient.ts b/packages/backend/src/lib/daoHausClient.ts index e6b2deeb..8ebd1b8a 100644 --- a/packages/backend/src/lib/daoHausClient.ts +++ b/packages/backend/src/lib/daoHausClient.ts @@ -3,13 +3,13 @@ import { GraphQLClient } from 'graphql-request'; import { CONFIG } from '../config'; import { getSdk, Sdk } from './autogen/daohaus-sdk'; -export function clientFactory(chain: string): Sdk { - switch (chain) { - case 'polygon': - return getSdk(new GraphQLClient(CONFIG.daoHausPolygonGraphqlURL)); - case 'xdai': - return getSdk(new GraphQLClient(CONFIG.daoHausXdaiGraphqlURL)); - default: - return getSdk(new GraphQLClient(CONFIG.daoHausGraphqlURL)); - } +const defaultGqlClient = new GraphQLClient(CONFIG.daoHausGraphqlURL); +const clients = new Map([ + ['polygon', new GraphQLClient(CONFIG.daoHausPolygonGraphqlURL)], + ['xdai', new GraphQLClient(CONFIG.daoHausXdaiGraphqlURL)], + ['ethereum', defaultGqlClient], +]); + +export function getClient(chain: string): Sdk { + return getSdk(clients.get(chain) || defaultGqlClient); }