lib/baz/collection_event_import_pages/collection_event_import_page.ex

defmodule Baz.CollectionEventImportPages.CollectionEventImportPage do
  @moduledoc """
  CollectionEventImportPage resource
  """

  use Ecto.Schema
  import Ecto.Changeset
  alias Baz.CollectionEventImports.CollectionEventImport

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

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

  schema "collection_event_import_pages" do
    field(:page_number, :integer)
    field(:next_page_cursor, :string)
    belongs_to(:collection_event_import, CollectionEventImport)

    timestamps(type: :utc_datetime_usec)
  end

  @doc false
  def changeset(page, attrs) do
    page
    |> cast(attrs, [:page_number, :next_page_cursor])
    |> cast_assoc(:collection_event_import)
    |> validate_required([:page_number, :collection_event_import])
    |> unique_constraint([:collection_event_import, :page_number])
  end
end