From c3c423429bcaea0590e98382ce2d82a20571aa1e Mon Sep 17 00:00:00 2001 From: Vivek Teega Date: Mon, 17 Jan 2022 20:56:48 +0530 Subject: [PATCH] 1.0.7 Added new column to token database to calculate address balances quickly --- test_rebuild.py | 2 +- tracktokens_smartcontracts.py | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test_rebuild.py b/test_rebuild.py index 954f49f..edfeeba 100644 --- a/test_rebuild.py +++ b/test_rebuild.py @@ -1,6 +1,6 @@ from sqlalchemy import create_engine, func from sqlalchemy.orm import sessionmaker -from models import SystemData, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, RejectedTransactionHistory, Base, ContractStructure, ContractBase, ContractParticipants, SystemBase, ActiveContracts, ContractAddressMapping, LatestCacheBase, ContractTransactionHistory, RejectedContractTransactionHistory, TokenContractAssociation, ContinuosContractBase, ContractStructure1, ContractParticipants1, ContractDeposits1, ContractTransactionHistory1, LatestCacheBase, LatestTransactions, LatestBlocks +from models import SystemData, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, RejectedTransactionHistory, Base, ContractStructure, ContractBase, ContractParticipants, SystemBase, ActiveContracts, ContractAddressMapping, LatestCacheBase, ContractTransactionHistory, RejectedContractTransactionHistory, TokenContractAssociation, ContinuosContractBase, ContractStructure1, ContractParticipants1, ContractDeposits1, ContractTransactionHistory1, LatestTransactions, LatestBlocks, DatabaseAddressMapping import json from tracktokens_smartcontracts import processTransaction import os diff --git a/tracktokens_smartcontracts.py b/tracktokens_smartcontracts.py index 8dbb104..d7bbc50 100755 --- a/tracktokens_smartcontracts.py +++ b/tracktokens_smartcontracts.py @@ -251,16 +251,16 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, consumedpid_string = consumedpid_string[:-1] # Make new entry - receiverAddress_details = session.query(ActiveTable).filter_by(address=outputAddress).order_by(ActiveTable.id.desc()).first() - senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() + receiverAddress_details = session.query(ActiveTable).filter(ActiveTable.address==outputAddress, ActiveTable.addressBalance!=None).order_by(ActiveTable.id.desc()).first() if receiverAddress_details is None: addressBalance = commentTransferAmount else: addressBalance = receiverAddress_details.addressBalance + commentTransferAmount receiverAddress_details.addressBalance = None - session.add(ActiveTable(address=outputAddress, consumedpid=str(piddict), transferBalance=commentTransferAmount, addressBalance = addressBalance)) - senderAddress_details.addressBalance = senderAddress_details.addressBalance - commentTransferAmount + + senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() + senderAddress_details.addressBalance = senderAddress_details.addressBalance - commentTransferAmount # Migration # shift pid of used utxos from active to consumed @@ -307,15 +307,15 @@ def transferToken(tokenIdentification, tokenAmount, inputAddress, outputAddress, consumedpid_string = consumedpid_string[:-1] # Make new entry - receiverAddress_details = session.query(ActiveTable).filter_by(address=outputAddress).order_by(ActiveTable.id.desc()).first() - senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() + receiverAddress_details = session.query(ActiveTable).filter(ActiveTable.address==outputAddress, ActiveTable.addressBalance!=None).order_by(ActiveTable.id.desc()).first() if receiverAddress_details is None: addressBalance = commentTransferAmount else: - addressBalance = receiverAddress_details.addressBalance + commentTransferAmount + addressBalance = receiverAddress_details.addressBalance + commentTransferAmount receiverAddress_details.addressBalance = None - session.add(ActiveTable(address=outputAddress, consumedpid=str(piddict), transferBalance=commentTransferAmount, addressBalance = addressBalance)) + + senderAddress_details = session.query(ActiveTable).filter_by(address=inputAddress).order_by(ActiveTable.id.desc()).first() senderAddress_details.addressBalance = senderAddress_details.addressBalance - commentTransferAmount # Migration