# `PhoenixKitCatalogue.Schemas.PdfPage`
[🔗](https://github.com/BeamLabEU/phoenix_kit_catalogue/blob/0.8.0/lib/phoenix_kit_catalogue/schemas/pdf_page.ex#L1)

Per-page join row keyed by `(file_uuid, page_number)`.

Rows reference the file (cascade on file hard delete) and the
`phoenix_kit_cat_pdf_page_contents` cache by `content_hash`.

No `text` column here — the actual page text lives in the dedup
cache. To read page text, join to `:content`.

No `updated_at` — pages are write-once; re-extraction means
deleting and re-inserting (or hard-deleting the file and
re-uploading).

# `t`

```elixir
@type t() :: %PhoenixKitCatalogue.Schemas.PdfPage{
  __meta__: term(),
  content: term(),
  content_hash: term(),
  file_uuid: term(),
  inserted_at: term(),
  page_number: term()
}
```

# `changeset`

```elixir
@spec changeset(
  t()
  | %PhoenixKitCatalogue.Schemas.PdfPage{
      __meta__: term(),
      content: term(),
      content_hash: term(),
      file_uuid: term(),
      inserted_at: term(),
      page_number: term()
    },
  map()
) :: Ecto.Changeset.t(t())
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
