lib/baz/collection_asset_import_pages/collection_asset_import_page.ex

defmodule Baz.CollectionAssetImportPages.CollectionAssetImportPage do
  @moduledoc """
  CollectionAssetImportPage resource
  """

  use Ecto.Schema
  import Ecto.Changeset
  alias Baz.CollectionAssetImports.CollectionAssetImport

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

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

  schema "collection_asset_import_pages" do
    field(:page_number, :integer)
    field(:next_page_cursor, :string)
    belongs_to(:collection_asset_import, CollectionAssetImport)

    timestamps(type: :utc_datetime_usec)
  end

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