# standard imports import logging import datetime # third-party imports from cic_cache.db.models.base import SessionBase logg = logging.getLogger() def list_transactions_mined( session, offset, limit, ): """Executes db query to return all confirmed transactions according to the specified offset and limit. :param offset: Offset in data set to return transactions from :type offset: int :param limit: Max number of transactions to retrieve :type limit: int :result: Result set :rtype: SQLAlchemy.ResultProxy """ s = "SELECT block_number, tx_index FROM tx ORDER BY block_number DESC, tx_index DESC LIMIT {} OFFSET {}".format(limit, offset) r = session.execute(s) return r def list_transactions_account_mined( session, address, offset, limit, ): """Same as list_transactions_mined(...), but only retrieves transaction where the specified account address is sender or recipient. :param address: Address to retrieve transactions for. :type address: str, 0x-hex :param offset: Offset in data set to return transactions from :type offset: int :param limit: Max number of transactions to retrieve :type limit: int :result: Result set :rtype: SQLAlchemy.ResultProxy """ s = "SELECT block_number, tx_index FROM tx WHERE sender = '{}' OR recipient = '{}' ORDER BY block_number DESC, tx_index DESC LIMIT {} OFFSET {}".format(address, address, limit, offset) r = session.execute(s) return r def add_transaction( session, tx_hash, block_number, tx_index, sender, receiver, source_token, destination_token, from_value, to_value, success, timestamp, ): date_block = datetime.datetime.fromtimestamp(timestamp) s = "INSERT INTO tx (tx_hash, block_number, tx_index, sender, recipient, source_token, destination_token, from_value, to_value, success, date_block) VALUES ('{}', {}, {}, '{}', '{}', '{}', '{}', {}, {}, {}, '{}')".format( tx_hash, block_number, tx_index, sender, receiver, source_token, destination_token, from_value, to_value, success, date_block, ) session.execute(s)