Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Add check before encoding/decoding values to/from the DB
  • Loading branch information
afalaleev committed Jan 14, 2022
commit bc8747f6a46d578a5b2eaff9328a6bfd7eaf2b89
5 changes: 2 additions & 3 deletions proxy/indexer/blocks_db.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from proxy.indexer.pg_common import encode, decode
from .utils import BaseDB, str_fmt_object


Expand Down Expand Up @@ -63,7 +62,7 @@ def _full_block_from_value(self, value, slot=None) -> SolanaBlockDBInfo:
hash=value[3],
parent_hash=value[4],
time=value[5],
signs=decode(value[6]),
signs=self.decode_list(value[6])
)

def get_block_by_slot(self, block_slot) -> SolanaBlockDBInfo:
Expand Down Expand Up @@ -93,7 +92,7 @@ def set_block(self, block: SolanaBlockDBInfo):
signatures=EXCLUDED.signatures
''',
(block.slot, block.finalized, block.height, block.hash,
block.parent_hash, block.time, encode(block.signs)))
block.parent_hash, block.time, self.encode_list(block.signs)))

def fill_block_height(self, height, slots):
rows = []
Expand Down
5 changes: 2 additions & 3 deletions proxy/indexer/transactions_db.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from proxy.indexer.pg_common import encode, decode
from .utils import BaseDB, SolanaIxSignInfo, NeonTxResultInfo, NeonTxInfo, str_fmt_object
from .blocks_db import SolanaBlockDBInfo

Expand Down Expand Up @@ -113,7 +112,7 @@ def _tx_from_value(self, value):
neon_tx.sign = value[0]
neon_tx.addr = value[1]
neon_res.sol_sign = value[2]
neon_res.logs = decode(value[len(self._column_lst) - 1])
neon_res.logs = self.decode_list(value[len(self._column_lst) - 1])

block.slot = neon_res.slot

Expand All @@ -133,7 +132,7 @@ def set_tx(self, tx: NeonTxDBInfo):
else:
assert False, f'Wrong usage {idx} -> {column}!'

row.append(encode(tx.neon_res.logs))
row.append(self.encode_list(tx.neon_res.logs))

cursor = self._conn.cursor()
cursor.execute(f'''
Expand Down
7 changes: 7 additions & 0 deletions proxy/indexer/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@


from proxy.indexer.pg_common import POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST
from proxy.indexer.pg_common import encode, decode


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -291,6 +292,12 @@ def _fetchone(self, values, keys) -> str:
def __del__(self):
self._conn.close()

def decode_list(self, v):
return [] if not v else decode(v)

def encode_list(self, v: []):
return None if (not v) or (len(v) == 0) else encode(v)


class LogDB(BaseDB):
def __init__(self):
Expand Down