watcher-ts/packages/uni-info-watcher
Ashwin Phatak 95f830178d
Test for all entities after MintEvent. (#188)
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
2021-08-06 12:12:52 +05:30
..
docs/analysis Watch pool burn and swap events (#128) 2021-07-09 12:30:50 +05:30
environments Misc changes for uni-info-watcher resolvers (#183) 2021-08-04 18:42:59 +05:30
src Test for all entities after MintEvent. (#188) 2021-08-06 12:12:52 +05:30
test Test for all entities after MintEvent. (#188) 2021-08-06 12:12:52 +05:30
.eslintignore uniswap-info-watcher package with frontend schema (#114) 2021-07-02 16:26:32 +05:30
.eslintrc.json Test for all entities after MintEvent. (#188) 2021-08-06 12:12:52 +05:30
.gitignore uniswap-info-watcher package with frontend schema (#114) 2021-07-02 16:26:32 +05:30
.mocharc.yml Smoke test for entities after Mint event (#185) 2021-08-05 17:12:11 +05:30
package.json Test for all entities after MintEvent. (#188) 2021-08-06 12:12:52 +05:30
README.md Move uni-info-watcher event procesing to job queue. (#156) 2021-07-22 10:02:06 +05:30
tsconfig.json uniswap-info-watcher package with frontend schema (#114) 2021-07-02 16:26:32 +05:30

uni-info-watcher

Instructions

Setup

Create a postgres12 database for the job queue:

sudo su - postgres
createdb uni-info-watcher-job-queue

Enable the pgcrypto extension on the job queue database (https://github.com/timgit/pg-boss/blob/master/docs/usage.md#intro).

Example:

postgres@tesla:~$ psql -U postgres -h localhost uni-info-watcher-job-queue
Password for user postgres:
psql (12.7 (Ubuntu 12.7-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

uni-watcher-job-queue=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION
uni-info-watcher-job-queue=# exit

Create a postgres12 database for the uni-info watcher:

sudo su - postgres
createdb uni-info-watcher

Update environments/local.toml with database connection settings for both the databases.

Run

  • Start the server:

    $ yarn server
    
  • Start the job runner:

    $ yarn job-runner
    
  • Run yarn server:mock to run server with mock data.

Mock Queries

{
  bundle(id: "1", block: { number: 2 }) {
    id
    ethPriceUSD
  }

	bundles(first: 1, block: { number: 2 }) {
    id
    ethPriceUSD
  }

  burns(first: 2, orderBy: timestamp) {
    amount0
    amount1
    amountUSD
    id
    origin
    owner
    pool {
      id
    }
    timestamp
    transaction {
      id
    }
  }

  factories(first: 1, block: { number: 2 }) {
    id
    totalFeesUSD
    totalValueLockedUSD
    totalVolumeUSD
    txCount
  }

  mints(first: 2) {
    amount0
    amount1
    amountUSD
    id
    origin
    owner
    pool {
      id
    }
    timestamp
    transaction {
      id
    }
    sender
  }

  pools(first: 2, block: { number:2 }) {
    feeTier
    id
    liquidity
    sqrtPrice
    tick
    token0 {
      name
    }
    token0Price
    token1 {
      name
    }
    token1Price
    totalValueLockedToken0
    totalValueLockedToken1
    totalValueLockedUSD
    txCount
    volumeUSD
  }

  tokens {
    derivedETH
    feesUSD
    id
    name
    symbol
    totalValueLocked
    totalValueLockedUSD
    txCount
    volume
    volumeUSD
  }

  transactions(first: 2) {
    burns {
      id
    }
    id
    mints {
      id
    }
    swaps{
    	id
    }
    timestamp
  }

  swaps(first: 2) {
    amount0
    amount1
    amountUSD
    id
    origin
    pool {
      id
    }
    timestamp
    transaction {
      id
    }
  }

  poolDayDatas(skip: 1, first: 2) {
	  date
    id
    tvlUSD
    volumeUSD
  }

  tokenDayDatas(first: 2, where: {}) {
	  date
    id
    totalValueLockedUSD
    volumeUSD
  }

  uniswapDayDatas(skip:1, first: 2) {
      date
      id
      tvlUSD
      volumeUSD
  }

  ticks(skip: 1, first: 2, block: { number: 2 }) {
    id
    liquidityGross
    liquidityNet
    price0
    price1
    tickIdx
  }

  tokenHourDatas(skip: 1, first: 2) {
    close
    high
    id
    low
    open
    periodStartUnix
  }
}

Queries with ID param

{
  pool(id: "0x38bb4e5eb41aeaeec59e60ba075298f4d4dfd2a2") {
    feeTier
    id
    liquidity
    sqrtPrice
    tick
    token0 {
      name
    }
    token0Price
    token1 {
      name
    }
    token1Price
    totalValueLockedToken0
    totalValueLockedToken1
    totalValueLockedUSD
    txCount
    volumeUSD
  }

  token(id: "0xb87ddd8af3242e56e52318bacf27fe9dcc75c15a", block: { number:2}) {
    derivedETH
    feesUSD
    id
    name
    symbol
    totalValueLocked
    totalValueLockedUSD
    txCount
    volume
    volumeUSD
  }
}

Scripts

  • generate:schema

    Generate schema for uniswap subgraph in graphql format. The get-graphql-schema tool is used to generate the schema (https://github.com/prisma-labs/get-graphql-schema). The uniswap subgraph graphql endpoint is provided in the script to generate the schema.

  • lint:schema

    Lint schema graphql files:

    $ yarn lint:schema docs/analysis/schema/frontend.graphql