lib/baz/collection_event_imports/collection_event_import.ex

defmodule Baz.CollectionEventImports.CollectionEventImport do
  @moduledoc """
  CollectionEventImport resource
  """

  use Ecto.Schema
  import Ecto.Changeset
  alias Baz.CollectionEventImportPages.CollectionEventImportPage

  @type t :: Ecto.Schema.t()

  @primary_key {:id, Ecto.UUID, autogenerate: true}

  schema "collection_event_imports" do
    field(:venue, :string)
    field(:slug, :string)
    field(:before, :utc_datetime_usec)
    field(:after, :utc_datetime_usec)
    field(:token_ids, Baz.EctoTypes.Strings)
    field(:event_types, {:array, :string})
    field :max_retries, :integer
    field(:status, :string)
    has_many(:pages, CollectionEventImportPage)

    timestamps(type: :utc_datetime_usec)
  end

  @doc false
  def changeset(collection, attrs) do
    collection
    |> cast(attrs, [
      :venue,
      :slug,
      :before,
      :after,
      :token_ids,
      :event_types,
      :max_retries,
      :status
    ])
    |> validate_required([
      :venue,
      :slug,
      :before,
      :after,
      :max_retries,
      :status
    ])
  end
end