Add prices-range

This commit is contained in:
Gui Heise 2022-01-19 15:43:59 -05:00
parent e105ee4d29
commit c4f82bdbd6
4 changed files with 49 additions and 3 deletions

15
cli.py
View File

@ -8,7 +8,7 @@ from mev_inspect.concurrency import coro
from mev_inspect.crud.prices import write_prices
from mev_inspect.db import get_inspect_session, get_trace_session
from mev_inspect.inspector import MEVInspector
from mev_inspect.prices import fetch_prices
from mev_inspect.prices import fetch_prices, fetch_prices_range
RPC_URL_ENV = "RPC_URL"
@ -117,6 +117,19 @@ def fetch_all_prices():
write_prices(inspect_db_session, prices)
@cli.command()
@click.argument("start", type=int)
@click.argument("end", type=int)
def fetch_range(start: int, end: int):
inspect_db_session = get_inspect_session()
logger.info("Fetching prices")
prices = fetch_prices_range(start, end)
logger.info("Writing prices")
write_prices(inspect_db_session, prices)
def get_rpc_url() -> str:
return os.environ["RPC_URL"]

9
mev
View File

@ -82,7 +82,14 @@ case "$1" in
kubectl exec -ti deploy/mev-inspect -- \
poetry run fetch-all-prices
;;
*)
fetch-range)
start=$2
end=$3
echo "Running price fetch-range"
kubectl exec -ti deploy/mev-inspect -- \
poetry run fetch-range $start $end
;;
*)
echo "prices usage: "$1" {fetch-all}"
exit 1
esac

View File

@ -20,7 +20,32 @@ def fetch_prices() -> List[Price]:
price_time_series = price_data["prices"]
for entry in price_time_series:
timestamp = dt.fromtimestamp(entry[0] / 100)
timestamp = dt.fromtimestamp(entry[0] / 1000)
token_price = entry[1]
prices.append(
Price(
timestamp=timestamp,
usd_price=token_price,
token_address=token_address,
)
)
return prices
def fetch_prices_range(start: int, end: int) -> List[Price]:
cg = CoinGeckoAPI()
prices = []
for token_address in TOKEN_ADDRESSES:
price_data = cg.get_coin_market_chart_range_by_id(
COINGECKO_ID_BY_ADDRESS[token_address], "usd", start, end
)
price_time_series = price_data["prices"]
for entry in price_time_series:
timestamp = dt.fromtimestamp(entry[0] / 1000)
token_price = entry[1]
prices.append(
Price(

View File

@ -39,6 +39,7 @@ inspect-many-blocks = 'cli:inspect_many_blocks_command'
enqueue-many-blocks = 'cli:enqueue_many_blocks_command'
fetch-block = 'cli:fetch_block_command'
fetch-all-prices = 'cli:fetch_all_prices'
fetch-range = 'cli:fetch_range'
[tool.black]
exclude = '''