Pdl
Pdl is a rather simple set of tools that enables something similar to the "dataloader" pattern, using Erlang process dictionaries.
In short, you can use it to batch up actions across a process (i.e. a single Phoenix request) and resolve them later (towards the end of the process)
This toolset is relatively minimal, leaving most of the implementation details up to the user.
Installation
This package can be installed
by adding pdl to your list of dependencies in mix.exs:
def deps do
[
{:pdl, "~> 0.1.1"}
]
endBasic Usage
# Somewhere in your process, where you want to add things to a batch
Pdl.add(:posts, post.id)
# => :ok
# Later, i.e. right before the end of the request
Pdl.run_all(:posts, fn post_ids ->
Posts.get_many(post_ids)
end)
# => result of `Posts.get_many(post_ids)`
Documentation can be found at https://hexdocs.pm/pdl.