Prathamesh Musale
ffc637f7a4
Part of [Generate watchers for sushiswap subgraphs deployed in graph-node ](https://www.notion.so/Generate-watchers-for-sushiswap-subgraphs-deployed-in-graph-node-b3f2e475373d4ab1887d9f8720bd5ae6) Co-authored-by: neeraj <neeraj.rtly@gmail.com> Reviewed-on: cerc-io/sushiswap-watcher-ts#5 Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com> Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
//
|
|
// Copyright 2021 Vulcanize, Inc.
|
|
//
|
|
|
|
import { gql } from '@apollo/client/core';
|
|
import { GraphQLClient, GraphQLConfig } from '@cerc-io/ipld-eth-client';
|
|
|
|
import { queries, mutations, subscriptions } from './gql';
|
|
|
|
export class Client {
|
|
_config: GraphQLConfig;
|
|
_client: GraphQLClient;
|
|
|
|
constructor (config: GraphQLConfig) {
|
|
this._config = config;
|
|
|
|
this._client = new GraphQLClient(config);
|
|
}
|
|
|
|
async getEvents (blockHash: string, contractAddress: string, name: string): Promise<any> {
|
|
const { events } = await this._client.query(
|
|
gql(queries.events),
|
|
{ blockHash, contractAddress, name }
|
|
);
|
|
|
|
return events;
|
|
}
|
|
|
|
async getEventsInRange (fromBlockNumber: number, toBlockNumber: number): Promise<any> {
|
|
const { eventsInRange } = await this._client.query(
|
|
gql(queries.eventsInRange),
|
|
{ fromBlockNumber, toBlockNumber }
|
|
);
|
|
|
|
return eventsInRange;
|
|
}
|
|
|
|
async watchContract (contractAddress: string, startingBlock?: number): Promise<any> {
|
|
const { watchContract } = await this._client.mutate(
|
|
gql(mutations.watchContract),
|
|
{ contractAddress, startingBlock }
|
|
);
|
|
|
|
return watchContract;
|
|
}
|
|
|
|
async watchEvents (onNext: (value: any) => void): Promise<ZenObservable.Subscription> {
|
|
return this._client.subscribe(
|
|
gql(subscriptions.onEvent),
|
|
({ data }) => {
|
|
onNext(data.onEvent);
|
|
}
|
|
);
|
|
}
|
|
}
|