Skip to content

Commit

Permalink
feat: allow to query gateway's height (#5)
Browse files Browse the repository at this point in the history
* feat: allow to query gateway's height

* refactor: use network singltone for get_network_height
  • Loading branch information
tmcgroul authored Feb 12, 2024
1 parent fb14959 commit 4720e1e
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 10 deletions.
4 changes: 3 additions & 1 deletion ape_subsquid/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from ape import plugins

from ape_subsquid.query import SubsquidQueryEngine
from ape_subsquid.query import SubsquidQueryEngine, get_network_height

__all__ = ["exceptions", "get_network_height"]


@plugins.register(plugins.QueryPlugin)
Expand Down
3 changes: 3 additions & 0 deletions ape_subsquid/gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,3 +294,6 @@ def _raise_error(self, error: HTTPError) -> ApeSubsquidError:
raise DataIsNotAvailable(text)
else:
raise ApeSubsquidError(text)


gateway = SubsquidGateway()
8 changes: 4 additions & 4 deletions ape_subsquid/networks.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from ape.api.query import QueryAPI
from ape.managers.networks import NetworkManager


def get_network(engine: QueryAPI) -> str:
ecosystem_name = engine.network_manager.ecosystem.name
network_name = engine.network_manager.network.name
def get_network(network_manager: NetworkManager) -> str:
ecosystem_name = network_manager.ecosystem.name
network_name = network_manager.network.name

if ecosystem_name == "bsc":
ecosystem_name = "binance"
Expand Down
18 changes: 13 additions & 5 deletions ape_subsquid/query.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from typing import Iterator, Optional, Type, TypeVar, cast

from ape import networks
from ape.api import BlockAPI, ReceiptAPI
from ape.api.query import (
AccountTransactionQuery,
Expand All @@ -23,13 +24,14 @@
Query,
SubsquidGateway,
TxFieldSelection,
gateway,
)
from ape_subsquid.mappings import map_header, map_log, map_receipt
from ape_subsquid.networks import get_network


class SubsquidQueryEngine(QueryAPI):
_gateway = SubsquidGateway()
_gateway = gateway

@singledispatchmethod
def estimate_query(self, query: QueryType) -> Optional[int]: # type: ignore[override]
Expand Down Expand Up @@ -61,7 +63,7 @@ def perform_query(self, query: QueryType) -> Iterator: # type: ignore[override]

@perform_query.register
def perform_block_query(self, query: BlockQuery) -> Iterator[BlockAPI]:
network = get_network(self)
network = get_network(self.network_manager)
q: Query = {
"fromBlock": query.start_block,
"toBlock": query.stop_block,
Expand All @@ -79,7 +81,7 @@ def perform_block_query(self, query: BlockQuery) -> Iterator[BlockAPI]:
def perform_account_transaction_query(
self, query: AccountTransactionQuery
) -> Iterator[ReceiptAPI]:
network = get_network(self)
network = get_network(self.network_manager)
q: Query = {
"fromBlock": 0,
"fields": {
Expand Down Expand Up @@ -118,7 +120,7 @@ def perform_account_transaction_query(

@perform_query.register
def perform_contract_creation_query(self, query: ContractCreationQuery) -> Iterator[ReceiptAPI]:
network = get_network(self)
network = get_network(self.network_manager)
contract = query.contract.lower()
q: Query = {
"fromBlock": query.start_block,
Expand Down Expand Up @@ -160,7 +162,7 @@ def perform_contract_creation_query(self, query: ContractCreationQuery) -> Itera

@perform_query.register
def perform_contract_event_query(self, query: ContractEventQuery) -> Iterator[ContractLog]:
network = get_network(self)
network = get_network(self.network_manager)
if isinstance(query.contract, list):
address = [address.lower() for address in query.contract]
else:
Expand Down Expand Up @@ -212,3 +214,9 @@ def gateway_ingest(gateway: SubsquidGateway, network: str, query: Query) -> Iter
break

query["fromBlock"] = last_block + 1


def get_network_height() -> int:
network = get_network(networks)
height = gateway.get_height(network)
return height

0 comments on commit 4720e1e

Please sign in to comment.