def lookup_user_record(update_task, session, entry, block_number, block_timestamp): event_blockhash = update_task.web3.toHex(entry.blockHash) event_args = entry["args"] user_id = event_args._userId # Check if the userId is in the db user_exists = session.query(User).filter_by(user_id=event_args._userId).count() > 0 user_record = None # will be set in this if/else if user_exists: user_record = ( session.query(User) .filter(User.user_id == user_id, User.is_current == True) .first() ) # expunge the result from sqlalchemy so we can modify it without UPDATE statements being made # https://stackoverflow.com/questions/28871406/how-to-clone-a-sqlalchemy-db-object-with-new-primary-key session.expunge(user_record) make_transient(user_record) else: user_record = User( is_current=True, user_id=user_id, created_at=datetime.utcfromtimestamp(block_timestamp) ) # update these fields regardless of type user_record.blocknumber = block_number user_record.blockhash = event_blockhash return user_record
def lookup_user_record(update_task, session, entry, block_number, block_timestamp, txhash): event_blockhash = update_task.web3.toHex(entry.blockHash) user_id = helpers.get_tx_arg(entry, "_userId") # Check if the userId is in the db user_record = (session.query(User).filter(User.user_id == user_id, User.is_current == True).first()) if user_record: # expunge the result from sqlalchemy so we can modify it without UPDATE statements being made # https://stackoverflow.com/questions/28871406/how-to-clone-a-sqlalchemy-db-object-with-new-primary-key session.expunge(user_record) make_transient(user_record) else: user_record = User( is_current=True, user_id=user_id, created_at=datetime.utcfromtimestamp(block_timestamp), ) # update these fields regardless of type user_record.blocknumber = block_number user_record.blockhash = event_blockhash user_record.txhash = txhash return user_record