From 0ea0a0728cd2a828b1e5104d48d6e40bd6204576 Mon Sep 17 00:00:00 2001 From: tim Date: Mon, 7 Oct 2024 14:28:28 -0400 Subject: [PATCH] addrmeta can repair pools --- src/dexorder/addrmeta.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/dexorder/addrmeta.py b/src/dexorder/addrmeta.py index f44973a..913f974 100644 --- a/src/dexorder/addrmeta.py +++ b/src/dexorder/addrmeta.py @@ -2,6 +2,7 @@ import logging from typing import TypedDict from dexorder import db +from dexorder.base.chain import current_chain from dexorder.blockstate import BlockDict from dexorder.database.model import Pool from dexorder.database.model.pool import OldPoolDict @@ -23,7 +24,17 @@ def save_addrmeta(address: str, meta: AddressMetadata): db.session.add(Token.load(meta)) elif meta['type'] == 'Pool': meta: OldPoolDict - db.session.add(Pool.load(meta)) + # Pools had to be updated for a repair, so we must first check if the pool existed already before inserting. + updated = Pool.load(meta) + pool = db.session.get(Pool, (current_chain.get().id, address)) + if pool is None: + db.session.add(updated) + else: + pool.exchange = updated.exchange + pool.base = updated.base + pool.quote = updated.quote + pool.fee = updated.fee + pool.decimals = updated.decimals else: log.warning(f'Address {address} had unknown metadata type {meta["type"]}')