Sono nuovo di DDD e sto lottando per trovare il modo corretto di risolvere un semplice problema.
Diciamo che sto lavorando a un progetto in cui sto elaborando carte di credito utilizzando un'API di terze parti che ha l'abilità di colpire un terminale di carta di credito o utilizzare le carte di credito salvate per elaborare un pagamento. Ho un'entità payment
, un'entità request
e un'entità token
. payment
ha attributi come payment_date
, amount
, ecc. nonché request_id
. Un token
può essere usato per bypassare il terminale della carta di credito. Si riferisce a una carta di credito utilizzata in precedenza, la quale viene archiviata con la società di elaborazione delle carte di credito.
Durante l'elaborazione dei rimborsi, devo conoscere l'ID del terminale della carta di credito che è stato utilizzato quando è stato effettuato il pagamento che è stato rimborsato. Questo è memorizzato nella tabella delle richieste nel database a meno che non sia stato utilizzato un token e il terminale della carta di credito non fosse necessario. L'entità token
ha un attributo source_request_id
che punta alla richiesta che lo ha creato. Può ottenere l'ID del terminale della carta di credito da quel record.
Le tabelle del database corrispondenti assomigliano a qualcosa.
tblPayment.id
tblPayment.amount
tblPayment.payment_date
tblPayment.request_id
tblRequest.id
tblRequest.terminal_id
tblRequest.token_id
tblToken.id
tblToken.source_request_id
Non sembra logico prendere il colpo di prestazioni per interrogare sempre il database per l'id del terminale, quando si crea l'entità payment
, specialmente se è stato usato un token.
Potrei aggiungere un metodo getTerminalId
all'entità payment
che estrarrà request
e token
entità dai loro repository e userà quelli per trovare l'id del terminale. Da quello che ho capito, però, infrange le regole della DDD.
Usando DDD, come dovrei ottenere l'id del terminale per payment
?