I’am new on elixir and I’m building an application that downloads some pdf files from s3. It works just fine using a supervisor and poolboy to manage the process, but I would like to retrieve all the links from a database, I’m seeing ecto but when I used It tells me that I need a supervisor.
This is my current model module
defmodule Pdf.Consumption do
use Ecto.Schema
alias Pdf.Consumption
alias Pdf.Repo
schema "consumptions" do
field :invoice_url
end
def all do
Consumption
|> Repo.all
end
end
This is my current application module
defmodule Pdf do
use Application
def start(_type, _args) do
poolboy_config = [
{:name, {:local, pool_name()}},
{:worker_module, Pdf.Worker},
{:size, 2},
{:max_overflow, 0}
]
children = [:poolboy.child_spec(pool_name(), poolboy_config, [])]
options = [
strategy: :one_for_one,
name: Pdf.Supervisor
]
Supervisor.start_link(children, options)
end
defp pool_name() do
:pdf_pool
end
defp pdf_pool(link) do
:poolboy.transaction(
pool_name(),
fn(pid) -> :gen_server.call(pid, link) end, :infinity
)
end
def parallel_pool(links) do
Enum.each( links, fn(link) -> spawn( fn() -> pdf_pool(link) end ) end )
end
end
And I would like to make this on parallel_pool
def parallel_pool do
Pdf.Consumption.all
|>Enum.each( links, fn(link) -> spawn( fn() -> pdf_pool(link) end ) end )
end
So my question is, how can achieve this? I need another module that use Application?