mirror of
https://github.com/cerc-io/watcher-ts
synced 2025-01-22 19:19:05 +00:00
Fix running erc20-watcher as active kind watcher (#116)
This commit is contained in:
parent
977564d17f
commit
b2233e16ef
@ -33,8 +33,33 @@ createdb erc20-watcher
|
|||||||
```
|
```
|
||||||
|
|
||||||
Update `environments/local.toml` with database connection settings for both the databases.
|
Update `environments/local.toml` with database connection settings for both the databases.
|
||||||
|
```toml
|
||||||
|
[database]
|
||||||
|
type = "postgres"
|
||||||
|
host = "localhost"
|
||||||
|
port = 5432
|
||||||
|
database = "erc20-watcher"
|
||||||
|
username = "postgres"
|
||||||
|
password = "postgres"
|
||||||
|
|
||||||
Update the `upstream` config in `environments/local.toml` and provide the `ipld-eth-server` GQL API and the `indexer-db` postgraphile endpoints.
|
[jobQueue]
|
||||||
|
dbConnectionString = "postgres://postgres:postgres@localhost/erc20-watcher-job-queue"
|
||||||
|
```
|
||||||
|
|
||||||
|
Update the `upstream` config in `environments/local.toml`. Provide the `ipld-eth-server` GQL and RPC API and the `indexer-db` postgraphile endpoints.
|
||||||
|
```toml
|
||||||
|
[upstream]
|
||||||
|
[upstream.ethServer]
|
||||||
|
gqlApiEndpoint = "http://127.0.0.1:8082/graphql"
|
||||||
|
gqlPostgraphileEndpoint = "http://127.0.0.1:5000/graphql"
|
||||||
|
rpcProviderEndpoint = "http://127.0.0.1:8081"
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensure that watcher is of active kind. Update the kind in `server` config to active.
|
||||||
|
```toml
|
||||||
|
[server]
|
||||||
|
kind = "active"
|
||||||
|
```
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
|
|
||||||
@ -70,6 +95,11 @@ $ yarn job-runner -f environments/local.toml
|
|||||||
|
|
||||||
GQL console: http://localhost:3001/graphql
|
GQL console: http://localhost:3001/graphql
|
||||||
|
|
||||||
|
Deploy an ERC20 token:
|
||||||
|
```bash
|
||||||
|
$ yarn token:deploy
|
||||||
|
```
|
||||||
|
|
||||||
Start watching a token:
|
Start watching a token:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -76,6 +76,10 @@ export class Indexer implements IndexerInterface {
|
|||||||
this._contract = new ethers.utils.Interface(this._abi);
|
this._contract = new ethers.utils.Interface(this._abi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async init (): Promise<void> {
|
||||||
|
await this._baseIndexer.fetchContracts();
|
||||||
|
}
|
||||||
|
|
||||||
getResultEvent (event: Event): EventResult {
|
getResultEvent (event: Event): EventResult {
|
||||||
const eventFields = JSON.parse(event.eventInfo);
|
const eventFields = JSON.parse(event.eventInfo);
|
||||||
|
|
||||||
@ -303,6 +307,10 @@ export class Indexer implements IndexerInterface {
|
|||||||
return this._baseIndexer.watchContract(address, kind, checkpoint, startingBlock);
|
return this._baseIndexer.watchContract(address, kind, checkpoint, startingBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cacheContract (contract: Contract): void {
|
||||||
|
return this._baseIndexer.cacheContract(contract);
|
||||||
|
}
|
||||||
|
|
||||||
async saveEventEntity (dbEvent: Event): Promise<Event> {
|
async saveEventEntity (dbEvent: Event): Promise<Event> {
|
||||||
return this._baseIndexer.saveEventEntity(dbEvent);
|
return this._baseIndexer.saveEventEntity(dbEvent);
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,7 @@ export const main = async (): Promise<any> => {
|
|||||||
await jobQueue.start();
|
await jobQueue.start();
|
||||||
|
|
||||||
const indexer = new Indexer(db, ethClient, postgraphileClient, ethProvider, jobQueue, config.server.mode);
|
const indexer = new Indexer(db, ethClient, postgraphileClient, ethProvider, jobQueue, config.server.mode);
|
||||||
|
await indexer.init();
|
||||||
|
|
||||||
const jobRunner = new JobRunner(jobQueueConfig, indexer, jobQueue);
|
const jobRunner = new JobRunner(jobQueueConfig, indexer, jobQueue);
|
||||||
await jobRunner.start();
|
await jobRunner.start();
|
||||||
|
@ -56,6 +56,7 @@ export const main = async (): Promise<any> => {
|
|||||||
const jobQueue = new JobQueue({ dbConnectionString, maxCompletionLag: maxCompletionLagInSecs });
|
const jobQueue = new JobQueue({ dbConnectionString, maxCompletionLag: maxCompletionLagInSecs });
|
||||||
|
|
||||||
const indexer = new Indexer(db, ethClient, postgraphileClient, ethProvider, jobQueue, mode);
|
const indexer = new Indexer(db, ethClient, postgraphileClient, ethProvider, jobQueue, mode);
|
||||||
|
await indexer.init();
|
||||||
|
|
||||||
const eventWatcher = new EventWatcher(config.upstream, ethClient, postgraphileClient, indexer, pubsub, jobQueue);
|
const eventWatcher = new EventWatcher(config.upstream, ethClient, postgraphileClient, indexer, pubsub, jobQueue);
|
||||||
|
|
||||||
|
@ -209,12 +209,14 @@ export class Indexer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getEventsByFilter (blockHash: string, contract?: string, name?: string): Promise<Array<EventInterface>> {
|
async getEventsByFilter (blockHash: string, contract?: string, name?: string): Promise<Array<EventInterface>> {
|
||||||
if (contract) {
|
// TODO: Uncomment after implementing hot reload of watched contracts in server process.
|
||||||
const watchedContract = await this.isWatchedContract(contract);
|
// This doesn't affect functionality as we already have a filter condition on the contract in the query.
|
||||||
if (!watchedContract) {
|
// if (contract) {
|
||||||
throw new Error('Not a watched contract');
|
// const watchedContract = await this.isWatchedContract(contract);
|
||||||
}
|
// if (!watchedContract) {
|
||||||
}
|
// throw new Error('Not a watched contract');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
const where: Where = {
|
const where: Where = {
|
||||||
eventName: [{
|
eventName: [{
|
||||||
|
Loading…
Reference in New Issue
Block a user