mirror of
https://github.com/anonklub/anonklub.git
synced 2026-01-10 02:17:55 -05:00
⬆️ 🐛 Bump duneapi python dep (#20)
This commit is contained in:
0
apis/query/.empty
Normal file
0
apis/query/.empty
Normal file
@@ -1,7 +1,5 @@
|
||||
FROM node:19-alpine
|
||||
|
||||
|
||||
|
||||
RUN apk update
|
||||
RUN apk add python3 \
|
||||
python3-dev \
|
||||
@@ -10,7 +8,7 @@ RUN apk add python3 \
|
||||
py3-pip \
|
||||
bash
|
||||
|
||||
RUN pip install duneapi
|
||||
RUN pip install duneapi==7.0.0
|
||||
|
||||
RUN npm i -g pnpm
|
||||
|
||||
@@ -23,6 +21,7 @@ RUN pnpm i --frozen-lockfile
|
||||
COPY tsconfig.json .
|
||||
COPY package-scripts.yaml .
|
||||
COPY src src
|
||||
COPY .empty .empty
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ export class DuneRepository {
|
||||
public async executeDuneQuery(
|
||||
queryId: Query,
|
||||
parameters?: Array<{
|
||||
name: string
|
||||
key: string
|
||||
type: ParameterType
|
||||
value: string | number
|
||||
}>,
|
||||
|
||||
@@ -33,9 +33,9 @@ export class QueryService {
|
||||
}) {
|
||||
return this.duneRepository
|
||||
.executeDuneQuery(Query.Erc20, [
|
||||
{ name: 'min', type: ParameterType.Number, value: Number(min) },
|
||||
{ key: 'min', type: ParameterType.Number, value: Number(min) },
|
||||
{
|
||||
name: 'tokenAddress',
|
||||
key: 'tokenAddress',
|
||||
type: ParameterType.Text,
|
||||
value: `'${tokenAddress}'`,
|
||||
},
|
||||
|
||||
@@ -3,31 +3,24 @@ import os
|
||||
import sys
|
||||
|
||||
from duneapi.api import DuneAPI
|
||||
from duneapi.types import QueryParameter
|
||||
from duneapi.types import DashboardTile, DuneQuery
|
||||
|
||||
QUERY_PARAM_TYPES = {
|
||||
'enum': QueryParameter.enum_type,
|
||||
'date': QueryParameter.date_type,
|
||||
'number': QueryParameter.number_type,
|
||||
'text': QueryParameter.text_type,
|
||||
}
|
||||
|
||||
|
||||
def parse_parameters(_parameters: str):
|
||||
return [QUERY_PARAM_TYPES[p['type']](p['name'], p['value']) for p in json.loads(_parameters)]
|
||||
|
||||
|
||||
dune = DuneAPI(os.environ['DUNE_USER'], os.environ['DUNE_PWD'])
|
||||
dune = DuneAPI(os.environ["DUNE_USER"], os.environ["DUNE_PWD"])
|
||||
dune.login()
|
||||
|
||||
query_id = int(sys.argv[1])
|
||||
parameters = None
|
||||
|
||||
# [{\"name\":\"min\",\"type\":\"number\",\"value\":10},{\"name\":\"tokenAddress\",\"type\":\"text\",\"value\":\"'0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'\"}]
|
||||
parameters = None
|
||||
if len(sys.argv[1:]) == 2:
|
||||
parameters = parse_parameters(sys.argv[2])
|
||||
parameters = json.loads(sys.argv[2])
|
||||
|
||||
job_id = dune.execute(query_id, parameters)
|
||||
records = dune.get_results(job_id)
|
||||
# duneapi api is a bit weird, can't simply pass a query id and execute, need to provide a query_file parameter even
|
||||
# if unused
|
||||
dashboard_tile = DashboardTile.from_dict(
|
||||
{"id": query_id, "parameters": parameters, "query_file": "./.empty", "network": "mainnet"}, os.getcwd()
|
||||
)
|
||||
dune_query = DuneQuery.from_tile(dashboard_tile)
|
||||
records = dune.execute_and_await_results(dune_query)
|
||||
|
||||
print(json.dumps([r['address'] for r in records]))
|
||||
print(json.dumps([r["address"] for r in records]))
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
import json
|
||||
import os
|
||||
|
||||
from duneapi.api import DuneAPI
|
||||
from duneapi.types import QueryParameter
|
||||
from duneapi.types import DuneQuery, DashboardTile
|
||||
|
||||
queries = {
|
||||
'beacon': 1499468,
|
||||
'tornado': 1499520,
|
||||
'erc20_balance': 1500107
|
||||
}
|
||||
queries = {"beacon": 1499468, "tornado": 1499520, "erc20_balance": 1500107}
|
||||
|
||||
dune_api = DuneAPI(os.environ['DUNE_USER'], os.environ['DUNE_PWD'])
|
||||
dune_api = DuneAPI(os.environ["DUNE_USER"], os.environ["DUNE_PWD"])
|
||||
dune_api.login()
|
||||
|
||||
parameters = [QueryParameter.number_type('min', 10),
|
||||
QueryParameter.text_type('tokenAddress',
|
||||
"'0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'")]
|
||||
parameters = [
|
||||
{"key": "min", "type": "number", "value": 10},
|
||||
{"key": "tokenAddress", "type": "text", "value": "'0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'"},
|
||||
]
|
||||
query_id = queries["erc20_balance"]
|
||||
|
||||
# duneapi api is a bit weird, can't simply pass a query id and execute, need to provide a query_file parameter even
|
||||
# if unused
|
||||
dashboard_tile = DashboardTile.from_dict(
|
||||
{"id": query_id, "parameters": parameters, "query_file": "./empty", "network": "mainnet"}, "."
|
||||
)
|
||||
dune_query = DuneQuery.from_tile(dashboard_tile)
|
||||
records = dune_api.execute_and_await_results(dune_query)
|
||||
|
||||
job_id = dune_api.execute(queries['erc20_balance'], parameters)
|
||||
records = dune_api.get_results(job_id)
|
||||
|
||||
print([r['address'] for r in records])
|
||||
print(json.dumps([r["address"] for r in records]))
|
||||
|
||||
@@ -10,7 +10,7 @@ charset-normalizer==2.1.1
|
||||
click==8.1.3
|
||||
cytoolz==0.12.0
|
||||
Deprecated==1.2.13
|
||||
duneapi==6.1.2
|
||||
duneapi==7.0.0
|
||||
eth-abi==2.2.0
|
||||
eth-account==0.5.9
|
||||
eth-hash==0.5.0
|
||||
|
||||
5
queries/the_graph/beacon-depositors.graphql
Normal file
5
queries/the_graph/beacon-depositors.graphql
Normal file
@@ -0,0 +1,5 @@
|
||||
query BeaconDepositors{
|
||||
depositors {
|
||||
id
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user