Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add msg_sender to lock/unlock events API response #514

Merged
merged 1 commit into from
Apr 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/model/db/idx_lock_unlock.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ class IDXLock(Base):
id = Column(BigInteger, primary_key=True, autoincrement=True)
# Transaction Hash
transaction_hash = Column(String(66), index=True, nullable=False)
# Message Sender of Transaction
msg_sender = Column(String(42), index=True, nullable=True)
# Block Number
block_number = Column(BigInteger, nullable=False)
# Token Address
Expand All @@ -55,6 +57,8 @@ class IDXUnlock(Base):
id = Column(BigInteger, primary_key=True, autoincrement=True)
# Transaction Hash
transaction_hash = Column(String(66), index=True, nullable=False)
# Message Sender of Transaction
msg_sender = Column(String(42), index=True, nullable=True)
# Block Number
block_number = Column(BigInteger, nullable=False)
# Token Address
Expand Down
2 changes: 2 additions & 0 deletions app/model/schema/position.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class LockEventCategory(str, Enum):
class LockEvent(BaseModel):
category: LockEventCategory = Field(description="Event category")
transaction_hash: str = Field(description="Transaction hash")
msg_sender: Optional[str] = Field(description="Message sender", nullable=True)
issuer_address: str = Field(description="Issuer address")
token_address: str = Field(description="Token address")
token_type: TokenType = Field(description="Token type")
Expand Down Expand Up @@ -102,6 +103,7 @@ class ListAllLockEventsQuery:

token_address: Optional[str] = Query(default=None, description="Token address")
token_type: Optional[TokenType] = Query(default=None, description="Token type")
msg_sender: Optional[str] = Query(default=None, description="Msg sender")
lock_address: Optional[str] = Query(default=None, description="Lock address")
recipient_address: Optional[str] = Query(
default=None, description="Recipient address"
Expand Down
1 change: 1 addition & 0 deletions app/model/schema/token.py
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,7 @@ class ListAllTokenLockEventsQuery:
limit: Optional[int] = Query(default=None, description="Number of set", ge=0)

account_address: Optional[str] = Query(default=None, description="Account address")
msg_sender: Optional[str] = Query(default=None, description="Msg sender")
lock_address: Optional[str] = Query(default=None, description="Lock address")
recipient_address: Optional[str] = Query(
default=None, description="Recipient address"
Expand Down
21 changes: 13 additions & 8 deletions app/routers/bond.py
Original file line number Diff line number Diff line change
Expand Up @@ -2010,6 +2010,7 @@ def list_all_lock_events_by_bond(
db.query(
literal(value=LockEventCategory.Lock.value, type_=String).label("category"),
IDXLock.transaction_hash.label("transaction_hash"),
IDXLock.msg_sender.label("msg_sender"),
IDXLock.token_address.label("token_address"),
IDXLock.lock_address.label("lock_address"),
IDXLock.account_address.label("account_address"),
Expand All @@ -2033,6 +2034,7 @@ def list_all_lock_events_by_bond(
"category"
),
IDXUnlock.transaction_hash.label("transaction_hash"),
IDXUnlock.msg_sender.label("msg_sender"),
IDXUnlock.token_address.label("token_address"),
IDXUnlock.lock_address.label("lock_address"),
IDXUnlock.account_address.label("account_address"),
Expand Down Expand Up @@ -2061,6 +2063,8 @@ def list_all_lock_events_by_bond(
case _:
query = query_lock.union_all(query_unlock)

if request_query.msg_sender is not None:
query = query.filter(column("msg_sender") == request_query.msg_sender)
if request_query.account_address is not None:
query = query.filter(column("account_address") == request_query.account_address)
if request_query.lock_address is not None:
Expand Down Expand Up @@ -2095,24 +2099,25 @@ def list_all_lock_events_by_bond(

resp_data = []
for lock_event in lock_events:
_token = lock_event[9]
_token = lock_event[10]
_bond = IbetStraightBondContract(_token.token_address).get()
token_name = _bond.name

block_timestamp_utc = timezone("UTC").localize(lock_event[8])
block_timestamp_utc = timezone("UTC").localize(lock_event[9])
resp_data.append(
{
"category": lock_event[0],
"transaction_hash": lock_event[1],
"msg_sender": lock_event[2],
"issuer_address": _token.issuer_address,
"token_address": lock_event[2],
"token_address": lock_event[3],
"token_type": _token.type,
"token_name": token_name,
"lock_address": lock_event[3],
"account_address": lock_event[4],
"recipient_address": lock_event[5],
"value": lock_event[6],
"data": lock_event[7],
"lock_address": lock_event[4],
"account_address": lock_event[5],
"recipient_address": lock_event[6],
"value": lock_event[7],
"data": lock_event[8],
"block_timestamp": block_timestamp_utc.astimezone(local_tz).isoformat(),
}
)
Expand Down
21 changes: 13 additions & 8 deletions app/routers/position.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ def list_all_lock_events(
db.query(
literal(value=LockEventCategory.Lock.value, type_=String).label("category"),
IDXLock.transaction_hash.label("transaction_hash"),
IDXLock.msg_sender.label("msg_sender"),
IDXLock.token_address.label("token_address"),
IDXLock.lock_address.label("lock_address"),
IDXLock.account_address.label("account_address"),
Expand All @@ -312,6 +313,7 @@ def list_all_lock_events(
"category"
),
IDXUnlock.transaction_hash.label("transaction_hash"),
IDXUnlock.msg_sender.label("msg_sender"),
IDXUnlock.token_address.label("token_address"),
IDXUnlock.lock_address.label("lock_address"),
IDXUnlock.account_address.label("account_address"),
Expand Down Expand Up @@ -345,6 +347,8 @@ def list_all_lock_events(
query = query.filter(column("token_address") == request_query.token_address)
if request_query.token_type is not None:
query = query.filter(Token.type == request_query.token_type.value)
if request_query.msg_sender is not None:
query = query.filter(column("msg_sender") == request_query.msg_sender)
if request_query.lock_address is not None:
query = query.filter(column("lock_address") == request_query.lock_address)
if request_query.recipient_address is not None:
Expand Down Expand Up @@ -378,28 +382,29 @@ def list_all_lock_events(
resp_data = []
for lock_event in lock_events:
token_name = None
_token = lock_event[9]
_token = lock_event[10]
if _token.type == TokenType.IBET_STRAIGHT_BOND.value:
_bond = IbetStraightBondContract(_token.token_address).get()
token_name = _bond.name
elif _token.type == TokenType.IBET_SHARE.value:
_share = IbetShareContract(_token.token_address).get()
token_name = _share.name

block_timestamp_utc = timezone("UTC").localize(lock_event[8])
block_timestamp_utc = timezone("UTC").localize(lock_event[9])
resp_data.append(
{
"category": lock_event[0],
"transaction_hash": lock_event[1],
"msg_sender": lock_event[2],
"issuer_address": _token.issuer_address,
"token_address": lock_event[2],
"token_address": lock_event[3],
"token_type": _token.type,
"token_name": token_name,
"lock_address": lock_event[3],
"account_address": lock_event[4],
"recipient_address": lock_event[5],
"value": lock_event[6],
"data": lock_event[7],
"lock_address": lock_event[4],
"account_address": lock_event[5],
"recipient_address": lock_event[6],
"value": lock_event[7],
"data": lock_event[8],
"block_timestamp": block_timestamp_utc.astimezone(local_tz).isoformat(),
}
)
Expand Down
21 changes: 13 additions & 8 deletions app/routers/share.py
Original file line number Diff line number Diff line change
Expand Up @@ -2006,6 +2006,7 @@ def list_all_lock_events_by_share(
db.query(
literal(value=LockEventCategory.Lock.value, type_=String).label("category"),
IDXLock.transaction_hash.label("transaction_hash"),
IDXLock.msg_sender.label("msg_sender"),
IDXLock.token_address.label("token_address"),
IDXLock.lock_address.label("lock_address"),
IDXLock.account_address.label("account_address"),
Expand All @@ -2029,6 +2030,7 @@ def list_all_lock_events_by_share(
"category"
),
IDXUnlock.transaction_hash.label("transaction_hash"),
IDXUnlock.msg_sender.label("msg_sender"),
IDXUnlock.token_address.label("token_address"),
IDXUnlock.lock_address.label("lock_address"),
IDXUnlock.account_address.label("account_address"),
Expand Down Expand Up @@ -2057,6 +2059,8 @@ def list_all_lock_events_by_share(
case _:
query = query_lock.union_all(query_unlock)

if request_query.msg_sender is not None:
query = query.filter(column("msg_sender") == request_query.msg_sender)
if request_query.account_address is not None:
query = query.filter(column("account_address") == request_query.account_address)
if request_query.lock_address is not None:
Expand Down Expand Up @@ -2091,24 +2095,25 @@ def list_all_lock_events_by_share(

resp_data = []
for lock_event in lock_events:
_token = lock_event[9]
_token = lock_event[10]
_share = IbetShareContract(_token.token_address).get()
token_name = _share.name

block_timestamp_utc = timezone("UTC").localize(lock_event[8])
block_timestamp_utc = timezone("UTC").localize(lock_event[9])
resp_data.append(
{
"category": lock_event[0],
"transaction_hash": lock_event[1],
"msg_sender": lock_event[2],
"issuer_address": _token.issuer_address,
"token_address": lock_event[2],
"token_address": lock_event[3],
"token_type": _token.type,
"token_name": token_name,
"lock_address": lock_event[3],
"account_address": lock_event[4],
"recipient_address": lock_event[5],
"value": lock_event[6],
"data": lock_event[7],
"lock_address": lock_event[4],
"account_address": lock_event[5],
"recipient_address": lock_event[6],
"value": lock_event[7],
"data": lock_event[8],
"block_timestamp": block_timestamp_utc.astimezone(local_tz).isoformat(),
}
)
Expand Down
12 changes: 12 additions & 0 deletions batch/indexer_position_bond.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,11 +326,14 @@ def __sync_lock(self, db_session: Session, block_from: int, block_to: int):
value = args.get("value", 0)
data = args.get("data", "")
event_created = self.__gen_block_timestamp(event=event)
tx = web3.eth.get_transaction(event["transactionHash"])
msg_sender = tx["from"]

# Index Lock event
self.__insert_lock_idx(
db_session=db_session,
transaction_hash=event["transactionHash"].hex(),
msg_sender=msg_sender,
block_number=event["blockNumber"],
token_address=token.address,
lock_address=lock_address,
Expand Down Expand Up @@ -432,11 +435,14 @@ def __sync_unlock(self, db_session: Session, block_from: int, block_to: int):
value = args.get("value", 0)
data = args.get("data", "")
event_created = self.__gen_block_timestamp(event=event)
tx = web3.eth.get_transaction(event["transactionHash"])
msg_sender = tx["from"]

# Index Unlock event
self.__insert_unlock_idx(
db_session=db_session,
transaction_hash=event["transactionHash"].hex(),
msg_sender=msg_sender,
block_number=event["blockNumber"],
token_address=token.address,
lock_address=lock_address,
Expand Down Expand Up @@ -933,6 +939,7 @@ def __sync_escrow(self, db_session: Session, block_from: int, block_to: int):
def __insert_lock_idx(
db_session: Session,
transaction_hash: str,
msg_sender: str,
block_number: int,
token_address: str,
lock_address: str,
Expand All @@ -944,6 +951,7 @@ def __insert_lock_idx(
"""Registry Lock event data in DB

:param transaction_hash: transaction hash
:param msg_sender: message sender
:param token_address: token address
:param lock_address: lock address
:param account_address: account address
Expand All @@ -959,6 +967,7 @@ def __insert_lock_idx(

lock = IDXLock()
lock.transaction_hash = transaction_hash
lock.msg_sender = msg_sender
lock.block_number = block_number
lock.token_address = token_address
lock.lock_address = lock_address
Expand All @@ -972,6 +981,7 @@ def __insert_lock_idx(
def __insert_unlock_idx(
db_session: Session,
transaction_hash: str,
msg_sender: str,
block_number: int,
token_address: str,
lock_address: str,
Expand All @@ -984,6 +994,7 @@ def __insert_unlock_idx(
"""Registry Unlock event data in DB

:param transaction_hash: transaction hash
:param msg_sender: message sender
:param token_address: token address
:param lock_address: lock address
:param account_address: account address
Expand All @@ -1000,6 +1011,7 @@ def __insert_unlock_idx(

unlock = IDXUnlock()
unlock.transaction_hash = transaction_hash
unlock.msg_sender = msg_sender
unlock.block_number = block_number
unlock.token_address = token_address
unlock.lock_address = lock_address
Expand Down
12 changes: 12 additions & 0 deletions batch/indexer_position_share.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,11 +326,14 @@ def __sync_lock(self, db_session: Session, block_from: int, block_to: int):
value = args.get("value", 0)
data = args.get("data", "")
event_created = self.__gen_block_timestamp(event=event)
tx = web3.eth.get_transaction(event["transactionHash"])
msg_sender = tx["from"]

# Index Lock event
self.__insert_lock_idx(
db_session=db_session,
transaction_hash=event["transactionHash"].hex(),
msg_sender=msg_sender,
block_number=event["blockNumber"],
token_address=token.address,
lock_address=lock_address,
Expand Down Expand Up @@ -432,11 +435,14 @@ def __sync_unlock(self, db_session: Session, block_from: int, block_to: int):
value = args.get("value", 0)
data = args.get("data", "")
event_created = self.__gen_block_timestamp(event=event)
tx = web3.eth.get_transaction(event["transactionHash"])
msg_sender = tx["from"]

# Index Unlock event
self.__insert_unlock_idx(
db_session=db_session,
transaction_hash=event["transactionHash"].hex(),
msg_sender=msg_sender,
block_number=event["blockNumber"],
token_address=token.address,
lock_address=lock_address,
Expand Down Expand Up @@ -933,6 +939,7 @@ def __sync_escrow(self, db_session: Session, block_from: int, block_to: int):
def __insert_lock_idx(
db_session: Session,
transaction_hash: str,
msg_sender: str,
block_number: int,
token_address: str,
lock_address: str,
Expand All @@ -944,6 +951,7 @@ def __insert_lock_idx(
"""Registry Lock event data in DB

:param transaction_hash: transaction hash
:param msg_sender: message sender
:param token_address: token address
:param lock_address: lock address
:param account_address: account address
Expand All @@ -959,6 +967,7 @@ def __insert_lock_idx(

lock = IDXLock()
lock.transaction_hash = transaction_hash
lock.msg_sender = msg_sender
lock.block_number = block_number
lock.token_address = token_address
lock.lock_address = lock_address
Expand All @@ -972,6 +981,7 @@ def __insert_lock_idx(
def __insert_unlock_idx(
db_session: Session,
transaction_hash: str,
msg_sender: str,
block_number: int,
token_address: str,
lock_address: str,
Expand All @@ -984,6 +994,7 @@ def __insert_unlock_idx(
"""Registry Unlock event data in DB

:param transaction_hash: transaction hash
:param msg_sender: message sender
:param token_address: token address
:param lock_address: lock address
:param account_address: account address
Expand All @@ -1000,6 +1011,7 @@ def __insert_unlock_idx(

unlock = IDXUnlock()
unlock.transaction_hash = transaction_hash
unlock.msg_sender = msg_sender
unlock.block_number = block_number
unlock.token_address = token_address
unlock.lock_address = lock_address
Expand Down
1 change: 1 addition & 0 deletions cmd/explorer/src/connector/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from typing import Any

from aiohttp import ClientSession

from cache import AsyncTTL

path = os.path.join(os.path.dirname(__file__), "../../../../")
Expand Down
Loading