addrmeta can repair pools

This commit is contained in:
tim
2024-10-07 14:28:28 -04:00
parent 6ca2b4247b
commit 0ea0a0728c

View File

@@ -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"]}')