When making database queries using Ecto we will use something like Users.Repo.get!(id), this of course works, but why do I not need to send/receive to communicate with the Users.Repo process? Why can I just call it as simple as referencing the module and function name?
Users is an OTP Application, where Users.Application has the Users.Repo process loaded as children to the Users.Supervisor process
...
def start(_type, _args) do
children = [
Users.Repo,
]
opts = [strategy: :one_for_one, name: Users.Supervisor]
Supervisor.start_link(children, opts)
end