kopia lustrzana https://github.com/bugout-dev/moonstream
Add migration.
rodzic
0bb88788ca
commit
8502889540
|
@ -0,0 +1,84 @@
|
||||||
|
"""
|
||||||
|
Add selectors to all moonworm tasks.
|
||||||
|
"""
|
||||||
|
import logging
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from bugout.exceptions import BugoutResponseException
|
||||||
|
from web3 import Web3
|
||||||
|
|
||||||
|
from ...settings import (
|
||||||
|
BUGOUT_REQUEST_TIMEOUT_SECONDS,
|
||||||
|
MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
||||||
|
MOONSTREAM_MOONWORM_TASKS_JOURNAL,
|
||||||
|
)
|
||||||
|
from ...settings import bugout_client as bc
|
||||||
|
from ...actions import get_all_entries_from_search
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def fill_missing_selectors_in_moonworm_tasks() -> None:
|
||||||
|
"""
|
||||||
|
Add selectors to all moonworm tasks.
|
||||||
|
"""
|
||||||
|
|
||||||
|
batch_size = 100
|
||||||
|
|
||||||
|
moonworm_tasks = get_all_entries_from_search(
|
||||||
|
journal_id=MOONSTREAM_MOONWORM_TASKS_JOURNAL,
|
||||||
|
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
||||||
|
search_query="type:subscription !#version:2.0",
|
||||||
|
timeout=BUGOUT_REQUEST_TIMEOUT_SECONDS,
|
||||||
|
)
|
||||||
|
|
||||||
|
entries_tags = []
|
||||||
|
|
||||||
|
## batch tasks
|
||||||
|
|
||||||
|
for task_batch in [
|
||||||
|
moonworm_tasks[i : i + batch_size]
|
||||||
|
for i in range(0, len(moonworm_tasks), batch_size)
|
||||||
|
]:
|
||||||
|
for task in task_batch:
|
||||||
|
tags = ["#version:2.0"]
|
||||||
|
|
||||||
|
## get abi
|
||||||
|
try:
|
||||||
|
abi = json.loads(task.content)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warn(f"Unable to parse abi from task: {task.id}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not any([tag.startswith("selector:") for tag in task.tags]):
|
||||||
|
## generate selector
|
||||||
|
|
||||||
|
abi_selector = Web3.keccak(
|
||||||
|
text=abi["name"]
|
||||||
|
+ "("
|
||||||
|
+ ",".join(map(lambda x: x["type"], abi["inputs"]))
|
||||||
|
+ ")"
|
||||||
|
)[:4].hex()
|
||||||
|
|
||||||
|
tags.append(f"#selector:{abi_selector}")
|
||||||
|
|
||||||
|
entries_tags.append(
|
||||||
|
{
|
||||||
|
"entry_id": task.entry_url.split("/")[-1], ## 😭
|
||||||
|
"tags": tags,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
## update entries
|
||||||
|
|
||||||
|
try:
|
||||||
|
bc.create_entries_tags(
|
||||||
|
journal_id=MOONSTREAM_MOONWORM_TASKS_JOURNAL,
|
||||||
|
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
||||||
|
entries_tags=entries_tags,
|
||||||
|
timeout=15,
|
||||||
|
)
|
||||||
|
except BugoutResponseException as e:
|
||||||
|
logger.error(f"Unable to update entries tags: {e}")
|
||||||
|
continue
|
Ładowanie…
Reference in New Issue