addrmeta can repair pools
This commit is contained in:
@@ -2,6 +2,7 @@ import logging
|
|||||||
from typing import TypedDict
|
from typing import TypedDict
|
||||||
|
|
||||||
from dexorder import db
|
from dexorder import db
|
||||||
|
from dexorder.base.chain import current_chain
|
||||||
from dexorder.blockstate import BlockDict
|
from dexorder.blockstate import BlockDict
|
||||||
from dexorder.database.model import Pool
|
from dexorder.database.model import Pool
|
||||||
from dexorder.database.model.pool import OldPoolDict
|
from dexorder.database.model.pool import OldPoolDict
|
||||||
@@ -23,7 +24,17 @@ def save_addrmeta(address: str, meta: AddressMetadata):
|
|||||||
db.session.add(Token.load(meta))
|
db.session.add(Token.load(meta))
|
||||||
elif meta['type'] == 'Pool':
|
elif meta['type'] == 'Pool':
|
||||||
meta: OldPoolDict
|
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:
|
else:
|
||||||
log.warning(f'Address {address} had unknown metadata type {meta["type"]}')
|
log.warning(f'Address {address} had unknown metadata type {meta["type"]}')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user