From 11fbe0534df70ca47ed4e872071bae9f4b60edf8 Mon Sep 17 00:00:00 2001 From: Ashwin Phatak Date: Thu, 13 May 2021 16:02:11 +0530 Subject: [PATCH] Refactor mock server. --- packages/server/package.json | 2 +- packages/server/src/gql.ts | 47 ++----------------- .../server/src/{mock-data.ts => mock/data.ts} | 0 packages/server/src/mock/resolvers.ts | 47 +++++++++++++++++++ 4 files changed, 51 insertions(+), 45 deletions(-) rename packages/server/src/{mock-data.ts => mock/data.ts} (100%) create mode 100644 packages/server/src/mock/resolvers.ts diff --git a/packages/server/package.json b/packages/server/package.json index ee0c27a3..5c0d9cde 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -4,7 +4,7 @@ "description": "ERC20 Watcher", "private": true, "scripts": { - "server": "nodemon src/server.ts", + "server": "MOCK=1 nodemon src/server.ts", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { diff --git a/packages/server/src/gql.ts b/packages/server/src/gql.ts index 2884d1dc..02c03e94 100644 --- a/packages/server/src/gql.ts +++ b/packages/server/src/gql.ts @@ -1,52 +1,11 @@ -import 'lodash'; import 'graphql-import-node'; import { makeExecutableSchema } from '@graphql-tools/schema'; -import BigInt from 'apollo-type-bigint'; import * as typeDefs from './erc20.graphql'; -import { blocks } from './mock-data'; +import mockResolvers from './mock/resolvers'; -const resolvers = { - BigInt: new BigInt('bigInt'), - - TokenEvent: { - __resolveType: (obj) => { - if (obj.owner) { - return 'ApprovalEvent'; - } - - return 'TransferEvent'; - } - }, - - Query: { - - balanceOf: (_, { blockHash, token, owner }) => { - console.log('balanceOf', blockHash, token, owner); - - return { - value: blocks[blockHash][token].balanceOf[owner], - proof: { data: '' } - } - }, - - allowance: (_, { blockHash, token, owner, spender }) => { - console.log('allowance', blockHash, token, owner, spender); - - return { - value: blocks[blockHash][token].allowance[owner][spender], - proof: { data: '' } - } - }, - - events: (_, { blockHash, token, name }) => { - console.log('events', blockHash, token, name); - return blocks[blockHash][token].events - .filter(e => !name || name === e.name) - .map(e => ({ 'event': e })); - } - } -}; +// TODO: Create resolvers backed by erc20 watcher. +const resolvers = process.env.MOCK ? mockResolvers : {}; export const schema = makeExecutableSchema({ typeDefs, diff --git a/packages/server/src/mock-data.ts b/packages/server/src/mock/data.ts similarity index 100% rename from packages/server/src/mock-data.ts rename to packages/server/src/mock/data.ts diff --git a/packages/server/src/mock/resolvers.ts b/packages/server/src/mock/resolvers.ts new file mode 100644 index 00000000..8c130849 --- /dev/null +++ b/packages/server/src/mock/resolvers.ts @@ -0,0 +1,47 @@ +import BigInt from 'apollo-type-bigint'; + +import { blocks } from './data'; + +const resolvers = { + BigInt: new BigInt('bigInt'), + + TokenEvent: { + __resolveType: (obj) => { + if (obj.owner) { + return 'ApprovalEvent'; + } + + return 'TransferEvent'; + } + }, + + Query: { + + balanceOf: (_, { blockHash, token, owner }) => { + console.log('balanceOf', blockHash, token, owner); + + return { + value: blocks[blockHash][token].balanceOf[owner], + proof: { data: '' } + } + }, + + allowance: (_, { blockHash, token, owner, spender }) => { + console.log('allowance', blockHash, token, owner, spender); + + return { + value: blocks[blockHash][token].allowance[owner][spender], + proof: { data: '' } + } + }, + + events: (_, { blockHash, token, name }) => { + console.log('events', blockHash, token, name); + return blocks[blockHash][token].events + .filter(e => !name || name === e.name) + .map(e => ({ 'event': e })); + } + } +}; + +export default resolvers;