lib/baz/iex/commands/import_collection.ex

defmodule Baz.IEx.Commands.ImportCollection do
  @moduledoc """
  Import a collection from a venue by matching slug
  """

  @type opts :: [venue: String.t(), slug: String.t()]

  @spec create(opts) :: no_return
  def create(opts) do
    attrs = build_attrs(opts)
    {:ok, _} = Baz.CollectionImports.create_collection_import(attrs)

    IEx.dont_display_result()
  end

  defp build_attrs(opts) do
    venue = Keyword.fetch!(opts, :venue)
    slug = Keyword.fetch!(opts, :slug)
    {:ok, max_job_retries} = Baz.Settings.get(:max_job_retries)

    %{"venue" => venue, "slug" => slug, "max_retries" => max_job_retries}
  end
end