Newer
Older
from collections import defaultdict
from Transaction import Transaction, TransactionType
class InvalidTransactionError(Exception):
"""This transaction is invalid"""
pass
class TransactionExecutor:
def __init__(self) -> None:
self.accounts = defaultdict(int)
def deposit(self, transaction: Transaction) -> None:
self.accounts[transaction.receiver_account]+=transaction.amount
def transfer(self, transaction: Transaction) -> None:
if transaction.sender_account not in self.accounts or self.accounts[transaction.sender_account]<transaction.amount:
raise InvalidTransactionError
self.accounts[transaction.sender_account]-=transaction.amount
self.accounts[transaction.receiver_account]+=transaction.amount
def transaction(self, transaction: Transaction) -> None:
try:
if transaction.type==TransactionType.DEPOSIT:
self.deposit(transaction)
elif transaction.type==TransactionType.TRANSFER:
self.transfer(transaction)
except InvalidTransactionError:
pass
print(self.accounts)