Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow to query gateway's height #5

Merged
merged 2 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading