I am creating a banking application. Currently, there is one primary service, the transaction service. This service allows getting transactions by id, and creating transactions. In order to create a transaction, I first want to check if the transaction is valid, by checking the balance of the account it is trying to deduct from, and seeing if they have enough balance. Right now I am doing
TransactionController
calls TransactionService
. TransactionService
creates Transaction
, then checks if this is a valid transaction. At this point, I have created an AccountsService
, that queries the AccountsRepository
, returns an Account
. I then do the comparison based on Account.balance > Transaction.amount
.
I am conscious here that the TransactionService
create method is relying on the AccountService
get method. Additionally, AccountService
is never directly called from a controller.
Is this an ok way to architect, or is there a more elegant way to do this?