Attualmente sto studiando lo sviluppo di un nuovo sistema che utilizza l'architettura esagonale e il pattern di comando facilitato da un commandbus come il tattico (è un sistema PHP).
Ora mi piace molto l'idea di commandpattern ma quello che non ho ancora è come recuperare il risultato effettivo di ciò che il comando ha fatto.
Diciamo che emetto un comando RegisterPatient con i seguenti campi:
- Nome
- Indirizzo
- nascita
etc
Il comando è stato riempito con dati provenienti da un'interfaccia HTTP, dati al commandhandler ed eseguiti. Se tutto va bene, creerà un oggetto Patient e lo conserverà nel database. Ma commandPattern non mi permette di restituire l'oggetto Patient costruito, in parte perché c'è la possibilità di aggiungere il middleware prima e dopo, quindi dovrebbe restituire il comando stesso.
Ho capito che esiste un valore nella separazione tra le applicazioni di lettura e scrittura, ma in pratica, come posso ottenere i dati dal datastore dopo che il comando è stato eseguito o leggere le query in generale? Non sarebbe saggio iniettare la RepositoryInterface per un determinato modello direttamente nel mio controller se volessi generare una vista indice per esempio?
Quali sono i modi pratici per gestire gli errori con i comandi?
Aiuto molto apprezzato.