# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Pool do
  def child_spec(opts) do
    poolboy_opts =
      opts
      |> Keyword.put(:worker_module, Pleroma.Pool.Request)
      |> Keyword.put(:name, {:local, opts[:name]})
      |> Keyword.put(:size, opts[:size])
      |> Keyword.put(:max_overflow, opts[:max_overflow])

    %{
      id: opts[:id] || {__MODULE__, make_ref()},
      start: {:poolboy, :start_link, [poolboy_opts, [name: opts[:name]]]},
      restart: :permanent,
      shutdown: 5000,
      type: :worker
    }
  end
end