Hi everyone, i’m new to this forum but no so much to elixir. Could anyone please help me to better understand Commanded.
I know that it keeps one genserver per aggregate, but does it keep current aggregate’s state in it? I mean when you need to apply a command to an aggregate, what does it do?
Does it fetch all previous events from store, builds the aggregate and apply the command?
Does it keep some sort of struct in it to which it applies the command?
If it is the first case, how can i log those queries against the eventstore?
Thanks in advance
In Commanded, after you dispatch your command, it will find the aggregate the needs to handle it based on your router. Once it finds the aggregate, if it is not running yet, it will spawn the aggregate server, load all relevant events from its subscription to get to its current state, then it executes the command. From that point onwards, as long as the aggregate is alive, the current state is in its memory.
After commands are handled, 0 or more events can be generated, which in turn are processed by the aggregate to update its state.
Regarding logging the queries to the eventstore, I’ve never really had the need for it and I am not sure if there is an option you can toggle to see them. I’d say that you can take a look at the evenstore guides (I am assuming you’re using commanded’s Postgres’s eventstore) eventstore/guides at master · commanded/eventstore · GitHub to see if there is an option for that.