Added rebuild code

This commit is contained in:
RanchiMall Dev 2023-08-22 10:49:34 +00:00
parent e011f7208a
commit 6f6f3ce420

View File

@ -1,14 +1,15 @@
from sqlalchemy import create_engine, desc, 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, ContractDeposits, ContractTransactionHistory1, LatestTransactions, LatestBlocks, DatabaseTypeMapping, ConsumedInfo
from models import SystemData, TokenBase, ActiveTable, ConsumedTable, TransferLogs, TransactionHistory, TokenContractAssociation, ContractBase, ContractStructure, ContractParticipants, ContractTransactionHistory, ContractDeposits, ConsumedInfo, ContractWinners, ContinuosContractBase, ContractStructure2, ContractParticipants2, ContractDeposits2, ContractTransactionHistory2, SystemBase, ActiveContracts, SystemData, ContractAddressMapping, TokenAddressMapping, DatabaseTypeMapping, TimeActions, RejectedContractTransactionHistory, RejectedTransactionHistory, LatestCacheBase, LatestTransactions, LatestBlocks
import json
from tracktokens_smartcontracts import processTransaction
from tracktokens_smartcontracts import processTransaction, checkLocal_expiry_trigger_deposit, newMultiRequest
import os
import logging
import argparse
import configparser
import shutil
import sys
import pdb
# helper functions
@ -174,6 +175,11 @@ else:
ltransactions = latestCache_session.query(LatestTransactions).all()
latestCache_session.close()
# make a list of all internal tx block numbers
systemDb_session = create_database_session_orm('system_dbs', {'db_name':'system1'}, SystemBase)
internal_action_blocks = systemDb_session.query(ActiveContracts.blockNumber).all()
internal_action_blocks = [block[0] for block in internal_action_blocks]
internal_action_blocks = sorted(internal_action_blocks)
lblocks_dict = {}
for block in lblocks:
@ -182,14 +188,31 @@ for block in lblocks:
lblocks_dict[block_dict['blockNumber']] = {'blockHash':f"{block_dict['blockHash']}", 'jsonData':f"{block_dict['jsonData']}"}
# process and rebuild all transactions
prev_block = 0
for transaction in ltransactions:
transaction_dict = transaction.__dict__
current_block = transaction_dict['blockNumber']
# Check if any internal action block lies between prev_block and current_block
for internal_block in internal_action_blocks:
if prev_block < internal_block <= current_block:
logger.info(f'Processing block {internal_block}')
# Get block details
response = newMultiRequest(f"block-index/{internal_block}")
blockhash = response['blockHash']
blockinfo = newMultiRequest(f"block/{blockhash}")
# Call your function here, passing the internal block to it
checkLocal_expiry_trigger_deposit(blockinfo)
transaction_data = json.loads(transaction_dict['jsonData'])
parsed_flodata = json.loads(transaction_dict['parsedFloData'])
try:
block_info = json.loads(lblocks_dict[transaction_dict['blockNumber']]['jsonData'])
processTransaction(transaction_data, parsed_flodata, block_info)
prev_block = current_block
except:
prev_block = current_block
continue
# copy the old block data